分享一位台湾的朋友良葛格的一篇文章。其实编程确实没有表面上看起来的那么简单,程序员耗尽脑力,冒着谢顶的风险奋斗。却往往被一些牟利的教育组织骗生源的表述为“程序的世界就是这么简单”,很多人奔着高薪就蒙头闯了进来,面临巨大的精神压力后又放弃的经过我面试的都不少了。其实要沉淀下来是需要多年的磨练与思考才能积累下来的。一个“老姜”不论是速度、质量、代码风险、扩展性...都是新手无法比拟的。现在面试的新人我都会跟他说这是一个坑,巨坑,你还愿意来吗?你会面临不断的学习,跟上日异月新出现的新技术,要具备超强的自学能力。
所以你读了下面的这篇文章后,以后教授新人就不要再演示“HelloWorld就是这么简单”之类的话了。

下面引用良葛格的文章

第一個Hello World的出現是在Brian Kernighan寫的"A Tutorial Introduction to the Language B"書籍中(B語言是C語言的前身),它用來將Hello World文字顯示在電腦螢幕上,自此之後,很多的程式語言教學文件或書籍上,已經無數次的將它當作第一個範例程式。
為什麼要用Hello World來當作第一個程式範例?基本上是因為它很簡單,初學者只要鍵入簡單的幾行程式,就可以令電腦執行指定的指令:顯示Hello World。我自以前到現在也是用它來教導一些人如何撰寫它的第一個程式,直到近來,我突然產生一個問題:「現今所有的軟體設計問題到底是什麼?是不是根 本上我們教育軟體設計人員的方向就錯了!?」

電腦呈現出現實生活中的種種活動與概念,並去除這些活動與概念中難以掌握與更動的要素,尤其是圖形化介面的產生,將桌面環境模擬於虛擬世界中,並擴 充了一些特性,從而使得人們覺得操作電腦是容易的、命令電腦 是容易的、改變電腦上的一切也是容易的。

這種觀念也漸漸深植在軟體設計人員的心中,至少是大多數人的心中,要改變程式中的幾個字符是這麼的容易,容易到完全不需要成本,事實上這是一種過於 天真的樂觀主義。

Hello World不經意的表現了一種暗示:「看!就是這麼簡單,我就可以在電腦上顯示Hello World。」有些文件或書籍甚至直接明示了這一點。

Brooks在The Mythical Man-Month中說的:「電腦編程基於十分容易掌握的介質,程式設計人員通過非常純綷的思維活動 - 概念以及靈活的表現形式來開發程序。正是由於介質的易于駕馭,我們期待在實現過程中不會碰到困難,因此造成了樂觀主義的彌漫。」

正因為介質容易掌握,我們誤以為我們可以自由的透過它來實現我們腦中的思維,這是一種邏輯上的謬誤,因為我們根本無法確切的掌握我們的思維,即使我 們有了最容易掌握的介質。

我們一開始就忽略了人類思維的複雜性與難以掌握,而強調電腦所創造的虛擬世界之易於駕馭,學習者是如此,匆匆的學習,急於掌握這種介質,教育者也是 如此,著重於教授如何透過即定的語言來掌握這種介質,而忽略了訓練學習者去掌握自己思維的複雜性與概念的建全性。

過去我們所能掌握的介質就像是木頭,我們試圖雕塑腦中的一個形象,但苦於對木頭塑形的難以控制,現在我們有了更易於塑形的泥土,我們誤以為我們可以 任意的實現腦中的想法,然而事實上並非如此,不受控的思維反到會使得我們在一陣忙亂之後,只得到一身的狼狽。

使用Hello World程式本身並沒有什麼錯誤,它展現了一個程式該有的元素,錯誤的重點又是在於人,至少從現在開始,我們不應該在展示了Hello World之後,宣稱設計程式就是這麼的容易,我們或許該說的是:「小心,就因為它是這麼的簡單,您要小心控制您的思維,不然程式就會狂亂!」

读到良葛格的反思Hello World相关推荐

  1. java学习笔记-良葛格_Java良葛格 学习笔记《二》

    正则表达式 . 符合任一字符 \d 符合0到9任一个数字字符 \D 符合0-9以外的字符 \s 符合'\t'.'\n'.'\x0B'.'\f'.'\r'等空格符 \w 符合a到z.A到Z.0到9等字符 ...

  2. 电影字幕下载网站大全(By乐葛格)

    电影字幕下载网站大全(srt.sub等格式) By 乐葛格 中文字幕下载站(chinese language) 射手网:www.shooter.com.cn(极力推荐,最全面) TLF原创字幕站 :h ...

  3. 读刘未鹏博客反思和总结(看书,思考,写博文)

    今天晚上把刘未鹏大牛的博客好好的翻了翻,对自己以后看书,学习的方式做个总结,本文并无新颖的观点,内容均来自刘未鹏大牛的博客,各位看官如果对此文观点有兴趣, 文章末尾有传送门.毕竟原汁原味的才好看嘛! ...

  4. 编程语言:C语言网络资源

    原文出自http://testwp.tk/?p=90 附录 一C语言网络资源C语言网络资源: C语言标准化组织ISO JTC1/SC22/WG14的主页,在这里可以找到ISO C的文档:http:// ...

  5. 漫谈C语言及如何学习C语言(转)

    云风最近写了一篇博客<C语言的前世今生>.作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未 ...

  6. 漫谈C语言及如何学习C语言

    漫谈C语言及如何学习C语言 云风最近写了一篇博客<C语言的前世今生>.作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的 ...

  7. 漫谈C语言及如何学习C语言--http://my.oschina.net/apeng/blog/137911

    目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一些有用的C语言网络资源: 一些值得关注及研究的C语言相关项目: 一些C语言编程时可以使 ...

  8. 8月31日下午3点半夏昕、林信良做客CSDN畅谈轻量级框架——Spring

    活动预告: 8月31日下午3点半夏昕.林信良做客CSDN畅谈轻量级框架--Spring 活动链接地址:[url]http://news.csdn.net/n/20060824/93992.html[/ ...

  9. java odjc ResultSet 的使用详解

    记得以前写过一篇,但是貌似那个有点问题,那个应该是列数,这个地方,我重新纠正一下自己,也记录一下,因为总是会忘记,正好今天用到了,就赶紧发了算了... 代码如下: Statement stmt = c ...

  10. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

最新文章

  1. 1.8正版生存服务器,我的世界1.8-1.16.5 qqof 生存服务器
  2. 红黑树二叉查找树二叉排序树的理解
  3. 链式前向星模板 建图+dfs+bfs+dijkstra
  4. 两数之和C++代码实现超详细讲解
  5. 5.1.3 OS控制I/O设备的几种方式?(程序直接控制方式、中断驱动方式、DMA、通道控制)
  6. Hexo错误_FATAL missed comma between flow collection entries at line
  7. 前后端分离session_前后端分离:基于JWT用户认证分析
  8. node.js项目中常量的配置 - 个人文章 - SegmentFault 思否
  9. 装饰一个类及内部方法
  10. 技术转管理,用什么来拯救自己?
  11. 防抖、节流(细讲)【面试】
  12. Unity4.3 2D新特性
  13. 机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析
  14. A Style-Aware Content Loss for Real-time HD Style Transfer(一个风格转换的风格感知损失)CVPR2018
  15. SCM供应链管理系统对更多行业未来
  16. 如何在JavaScript中用SpreadJS导入/导出Excel文件
  17. LINUX系统下跑分测试脚本:unixbench.sh
  18. 函数部分编程大作业(持续更新)
  19. python高考加分_Python将纳入浙江省新高考,你知道了吗?
  20. STM32+EC20实现4G无线通信

热门文章

  1. 网络协议之Netflow与sFlow协议
  2. S7-200SMART 模拟量间接寻址 批量处理
  3. RAID技术分类介绍
  4. storm风暴英雄 tempo_【风暴英雄】锐派专区 - fb.replays.net | 风暴英雄官网合作中文站...
  5. 差距几何 Vista与XP系统性能对比测试(下)
  6. java 检测点击事件控件_iCheck控件ifClicked和ifChanged事件的讨论
  7. 查看页面滚动条滚动距离,可视区窗口尺寸
  8. 【亲自动手试验过的】硬盘免光驱安装Fedora5
  9. 2020-10-05 Python编程从入门到实践 第16章 下载数据 动手试一试 16-2 比较锡特卡和死亡谷的气温 习题练习
  10. ip经济ip猫:「飞海豚」大圣基因/医修鸽的ValueUP | Chain++