我们不先教儿童牙结石。我们首先教他们算术,然后是代数,然后是几何,分析几何,然后是最后的微积分。
为什么然后,我们首先教我们的计算机科学家框架和IDE。有些课程会迫使学生学习计算机科学的基础知识,但我看到的绝大多数毕业生都无法构建自己的框架来挽救他们的生命。
下一代工具制造商在哪里?
我们如何促进创建框架和开发环境所需的理解?
这当然是一般性的。并非所有的教育都缺乏,但它似乎占多数,并且它降低了我们整个职业的质量。
答案 0 :(得分:3)
摆脱需要X年经验的人力资源部门。大学只是根据人力资源部门的要求定制课程。
我雇用的毕业生可以编写某些东西(我真的不在乎什么语言),谁可以学习。
答案 1 :(得分:3)
我明白你的观点,虽然我认为数学类比并不合适。您 知道基本算术,以便能够在任何其他数学学科中完成任何工作。
当我开始编程时,框架几乎闻所未闻。如果你想要一个二元树,上帝,你去写了一个。在C或汇编程序中。基本上就是这样,所以要完成任何事情,你必须要了解很多。
今天,框架和IDE以及设计人员可以让“noobs”在不知道如何构建框架,编译器或管理内存分配的第一件事情的情况下创建非常精彩的东西。
真正的问题是,那些认为他们很棒的dingbats,伟大的程序员,因为他们使用Frontpage或Access?管理人员很难说出这种程序员与真正知道软件开发作为一门学科的程序员之间的区别。
所以,具体来说,为什么会这样?因为每个人都想要一份工作而且没有人雇用那些知道如何构建二叉树的程序员。他们希望程序员知道.Net或J2EE等。
答案 2 :(得分:3)
我认为可能有足够的工作可以让9到5名程序员从框架层面开始并从那里开始。真正好的 - 主要是你作为职业和/或程序作为业余爱好的程序 - 无论如何都将获得他们在大学期间可能遗漏的知识。无论你教什么课程,你都不能强迫每个人成为一个优秀的程序员。好奇的学生将学习基础知识,无论是在课堂上教给他们还是完全靠他们自学。
答案 3 :(得分:3)
我认为这个比喻有点过时了。一个更好的比喻是“我们不教我们的孩子使用计算器来加减,为什么要教程序员使用IDE来编程?”
答案 4 :(得分:1)
有工具制造商和工具断路器。当然还有工具,但我们不去那里。
如果你好好看一下汽车研讨会,你会看到很多有趣的小工具,你在五金店的货架上看不到。就像用于推回制动钳活塞的那些。或者用于压缩阀杆的夹子,这样你就可以用一只手拿出夹头,同时与你的伙伴交谈钉新的秘书(当弹簧从你的螺丝刀上滑出时,不要看着它们飞过房间)。
这些是由力学设计的。它们非常有效,通常小而便宜,并且在你看到它们的实际行动之前完全无法理解。
汽车技术的大部分深刻变化都是自下而上的,但也需要自上而下。个别机械师无法进行基本的技术改变,如从铸铁转换为合金头。一把新扫帚清扫干净,一把旧扫帚知道角落。你需要两者。
但我离题了:关键是如果缺乏基本技能和知识,那么机械师就无法设计这些工具。当我还是个孩子的时候,父亲用废铁给我建了一辆摩托车。作为一个成年人,因为我缺乏他的技能,知识和思维模式,我几乎无法维护我从本田购买的自行车,更不用说像T先生那样在创造性的狂热中扮演的角色。
有了代码,我就像我父亲的钢铁一样。 Donald Knuth是我不变的伴侣,当我们的GPS记录器的无线协议需要在.NET中实现时,他们就会看到它。小部件猴子不知道从哪里开始。
答案 5 :(得分:1)
我认为问题实际上是一般的GUI范例。
微软使用计算机变得更加容易,他们推广了图形用户界面。他们将这个界面隐喻(桌面,文件)带到了编程领域,并且使用他们的Visual Basic工具也非常有效。
但正如GUI模糊了“引擎盖下”发生的事情一样,IDE也掩盖了对位和字节的操纵。问题当然是风险与奖励比率 - 程序员对生产力的损失有多少理解?
粗略地看一下“计算机编程的艺术”可能会说明为什么IDE很有用; “当我们有1位项目时,可以实现最终的打包密度,因为我们可以将其中的64位填充到一个64位的单词中。例如,假设我们想要一个小于1024的所有奇素数的表,所以我们可以很容易地决定一个小整数的素数。没问题;只需要8个64位数字:p0 = 011101101101001100101101001001001100101100101001000101101101000000 p1 =。 。 。“
编程非常困难,您可以看到IDE如何提供帮助。 :^)
答案 6 :(得分:0)
在编程时学习抽象比学习细节更容易。教别人手工编写汇编程序以打印“Hello World”比让它们将一个带有一个按钮的表单放在一起更加困难,当单击按钮时会显示一个“Hello World”消息。
在学习驾驶之前,你不知道如何制造汽车发动机,是吗?因为没有必要开车。同样,您不需要了解链表或二叉树如何工作以维护名称列表并进行搜索。
总会有人想要深入了解并了解事情的“原因”,但我认为不需要完成任务。
答案 7 :(得分:0)
我总是通过询问难以解决的问题来筛选应用程序,如果他们了解某些内容确实有效,他们只能回答。我认为真正的耻辱是学院和大学正在教人们基于框架的开发,而不是专注于核心软件原则。我同意,最重要的是了解编程如何运作的人,并且有动力去学习任何有关编程的知识。
答案 8 :(得分:0)
我所知道的大多数大学都对计算机编程课程进行了介绍,该课程教授基本的编程概念。不幸的是,如果不实际编写代码,就不可能教授编程。
问题是有些人喜欢使用某种OO语言(如JAVA或C#)来教授本课程,因此学生必须使用Visual Studio(或Java等效语言)。 当IDE强迫您以某种方式工作时,很难解释基本概念。
我认为学生学习的第一语言应该是C语言等功能语言。这样你就可以在它们和基本的CS概念之间有更少的抽象层次。
答案 9 :(得分:0)
同意cfeduke。
我看了两年前我做过的相同CS课程的工作,他们更难了。 5年前,方式方式更难。
CS栏越来越低,大概是因为有越来越多的工作不需要任何复杂的CS科目的任何工作知识。人们只需要削减代码就可以获得大量工作。
由于传统上希望成为程序员的人在编写CS课程时变得更容易,但情况仍然如此。
真正需要实现的是CS 不是专业软件开发的必要条件。相反,需要有另一个课程,更多地关注让人们走出门并削减代码。
这将使CS成为下一代工具制造商的 课程。