当前位置:首页 >科技 > 正文

编程 ≠ 编码!
2023-04-14 17:27:17    CSDN

我们都以为,学习编程就是学写代码,但一名教授编程的老师指出:编程≠编码,更多时间都花在了工具问题上。

原 文链接:https://occasionallycogent.com/programming_isnt_coding/index.html

未经授权,禁止转载!


(资料图片仅供参考)

作 者 | James Cash 译者 | 弯月 责编 | 郑丽媛 出品 | CSDN(ID :CSDNnews)

学习编程的时候,实际上 我 们 花在逻辑学习上的时间非常少,大多时间都花在了学习和管理编程工具上; 程序员 认为他们 把 所 有时间花在了创建精心的设计和复杂的抽象上,但实际上更多时间都花在了处理工具和带有历史包袱的习惯写法上。

有什么问题?

根据我教授编程的经验,我们很少花时间让学生去学习如何编写代码:在最初的一段时间里, 新手 要学习“算法思维”,然后学习新语言或范例。我们会帮助学生学习逻辑和编程,但在“学习写代码”的课程中,代码本身并不是他们需要学习的内容。

相反,导师需要处理的问题主要是工具,比如“EADDRINUSE 错误,然后崩溃了”;“git 出错了”;“npm 分段错误”。我们需要尽最大努力消除配置的问题,让所有学生都使用标准化的编辑器,并在虚拟环境中写代码,这样可以保持环境完全相同。

如 今“每个人都应该学习编程”的说法很流行, 但 如果没有事先设置好环境就开始学习,情况会很糟糕吗?如果没有良好的基础,是否也可以学习编程呢?

经验丰富的程序员一般不怎么讨论工作中多么需要依赖工具,我们喜欢把自己塑造成才华横溢的概念艺术家,着重强调我们掌握了算法和数据结构等极其复杂的知识。虽然有些职位确实需要这种抽象级别,但我敢打赌,绝大多数程序员更多时间都花在了解决编程工作中遇到的各种工具问题。

一些具体的例子

烦人的工具有一箩筐。

使用终端

对于大多数非 Windows 开发人员来说, 使用 终端浪费了大量时间。不幸的是,对于大多数新手程序员来说,在终端中写代码似乎是非常新鲜的事情,当然遇到麻烦的情况另论。

我经常看到学生通过 cd 命令,层层深入目录 (而不是执行一个命令 cd dir1/dir2/dir3) ,他们也不知道使用 Tab 键可以自动补齐,会奇怪为什么不能直接用鼠标点击来移动光标,以及许许多多奇怪的问题。

如何退出程序

关于 使用 终端的麻烦,还有一个例子是退出各种程序。

相信很多人都听过一个笑话:“怎么退出 vim?”当默认的 $EDITOR 设置为 vi 时,这就真的会变成学生的一个问题。不仅仅是 vi,很多学生不知道大多数程序可以按 Ctrl-C 中断,另一些可以按 Ctrl-D 结束,q 可以退出分页,\q 可以退出 PSQL。

有些学生偶然发现按 Ctrl-Z 可以暂停进程,他们觉得很有趣,对他们来说这就相当于退出。这种想法会引发一些非常奇怪的问题,尤其是他们以为自己已经退出了服务器,但仍有一堆副本在后台运行。

Git

关于 git 难以理解的讨论已经是陈词滥调了,但其实这种说法确实有充分的理由。

在这个领域,我知道我的 git 经验水平不足以帮助学生。长期以来,我已经习惯于从命令行使用 git,更不用说我曾花大量时间阅读实现细节了——这就导致在教学的过程中,我根本不记得不理解 git 是什么感觉。

我认为,如果学生们学会使用 GUI 工具来使用 git,就可以享受到更好的服务,至少一开始是这样,但这非常不利于开发。有人可能会说,GUI 工具并没有公开 git 的所有功能。但你知道吗,命令行界面也没有公开。至少在使用 GUI 时,用户可以看到按钮和提交的可视化图,帮助他们了解 git 都有哪些用途。

编辑器

我喜欢使用 Emacs 和 vim,但我不推荐学生使用这两款工具。因为学生需要付出很多努力,才能学会使用这两款工具的基本功能,更不用说学习如何让这些编辑器发挥真正的力量了。

在我的课程上,学生们使用的是 VS Code,这也是一款非常强大的编辑器,但学生们并不知道如何利用它。当我告诉学生们可以使用 Cmd-p 或 Ctrl-p 跳转到文件时,他们大受震撼,但在我看来这只不过是 VS Code 的基础操作。

与大多数专家工具一样,文本编辑器编程可以为专家提供更强大的功能,但初学者来说不太容易上手。

React

React 教学周总是很艰难。 以前,我们 学习的是基于类的 React,那时的教学就非常别扭,因为学生必须学习 ES6 的类语法,其中包含一大堆奇怪的语法。 学习这些很难,但 Hook 似乎更难。

我很喜欢基于 Hook 的 React,因为我曾通过 Clojurescript 使用 React (最初使用的是 Om,现在使用 reagent/re-frame) 。然而,对于还没有习惯函数式编程风格的人来说,就需要做很多功课了。

使用纯 Javascript 进行函数式编程需要特 别小心, 因 为这门语言 根本无法帮助你 避免突变。 更糟糕的 是, Re act 也 根本没 有任 何措施来避免 你犯错 。

学生很难学会正确使用基于 Hook 的 React,因为即使用“错误”的方式,似乎也能正常工作,比如直接改变状态变量或进行不安全的状态更新 (例如在设置新值的时候使用旧的状态值) 。学生写了一堆代码,看着似乎没问题,还可以运行,没有错误或警告,但如果之后他们添加一些其他更改,就会导致程序以很奇怪的方式出错,比如更新莫名其妙地丢失,重新渲染没有完成,然后学生也不知道为什么。

不过至少 React 还有一些入门教程 create-react-app,如果他们在学习 React 之前必须学习使用 webpack、babel 等,那么就真的不可能学会了。尽管这样,他们也会遇到一些奇怪的问题。最打击人的是自动构建停止工作,学生们修改代码,但就是不起作用,因为实际上他们的代码根本没有运行。

数量庞大

如果学生只需要学习其中的一两个工具,倒也还好。所有学科都有需要学习的工具和实践,这些工具和实践提供了一定程度上的辅助作用。

然而,对于编程,你需要学习的新知识非常多,薅牛毛 (Yak Shaving) 一词诞生于编程界而非机械师,这是有原因的。人们在学习编程时,有无数令人费解的工具令他们头昏脑胀,很容易产生疲劳,变得非常沮丧:当所做的一切只会招致更多麻烦时,每个人都会感到沮丧,所以你只需让代码跑起来,不要深入研究背后的原因或如何更有效地完成任务。

我们应该做什么?

我一直认为,真正有用的课程不一定要教大家学编程,而是让大家学会如何像程序员一样使用计算机。很多时候,这才是我们需要培养的最厉害的技能:不是算法思维,而是对如何使用计算机有深入了解。

人们需要成为专家才能使用基本工作,作为软件开发人员,这算不算是我们的失败之处? 我 不知道。

许多任务本身就很复杂,但我们肯定能找到方法降低难度。我只是担心,程序员会为了寻找某种成就感不想让编程变得太简单。他们当初付出大量努力来学习如何使用这些工具,如果这些工具变得更容易使用,可能会让他们觉得曾经所有的努力都是白费。

我想这可能是一代人的变化,随着如今人们开始学习使用 Glitch 这样的工具编写代码,也许将来他们无法忍受如今这些笨拙工具,自然就能诞生更好的工具。如今的开发人员似乎更喜欢用户友好的东西 (解释性语言、图形工具) ,尽管仍有很多人主张回归到“更简单”的做事方式,比如使用 C 而不是 “高级语言”,反对语法高亮显示等。

目前,我正在尝试一些事情:

▶ 安慰学生们,遇到奇怪工具问题时耗费大量时间并不罕见,这也不是他们的错。

▶ 尽我最大的努力慢慢向学生介绍新的特性和功能,不要一下子给他们灌输太多知识。

▶ 不要执着于用“正确”的做事方式,例如 “真正的程序员只在命令行中使用 git”。

但这些措施治标不治本,我们怎样才能让编程课程专心教授编程呢?或者说,有这种可能性吗? 无论如何,我 认 为 如果我们认识 到这是一个问题,就应该尝试为了下一代程序员而努 力改进。

毕竟,梦想还是要有的……

关键词:

下一篇:
上一篇:

编程 ≠ 编码!

麻山竹和油山竹哪种好吃?-当前速递

美媒:大规模枪击事件是美国“国耻” 枪案频发暴露政治制度缺陷 播资讯

天天视点!一个个科研项目落地的背后

西施壶配什么杯子好看 西施壶配哪种杯子好看

环球报道:地役权与其他物权的区别

彰显“免予刑事处罚”条款司法功能

华为手机丢了关机怎么办可以定位找回 天天要闻

焦点速看:西安市第四十四中学举办“最美教室”布置及评比活动

金色花海漫山遍野,基本每个镇都能看到,汉中油菜花不愧中国最美

今日热搜:中信证券:AI赋能智慧家居 家庭影音娱乐先行

每日动态!梨树县金山乡:人居环境拉练检查 擦亮乡村振兴底色

友邦保险(01299)连续21日回购 累计斥资27.75亿港元_环球观热点

亨利:马丁内利在英超表现很好 维尼修斯是当下最强左边锋

今日热搜:手机root之后能不能恢复(手机root之后怎么恢复成原来的)

高压锅怎么用教程_高压锅为什么会爆炸?高压锅的正确使用方法和高压锅的原理!

当前热点-业绩增长背后,麦克奥迪走出了一条怎样的进阶之路?

IFFHS认证梅西702球,欧洲俱乐部历史第一射手-焦点精选

当前短讯!河北东光县推进大运河文化带建设 绘就美丽乡村画卷

海南椰风海韵·海景花苑房价能降吗?2023房价下跌了吗?

女子花330万买房送110平方米阳台,当事人:看中超大阳台才买,但封窗要花20多万

河南医保个人账户每个月能返多少钱

“偿二代二期”下首份SARMRA评估结果出炉:40家险企评分上升,7家得分不足70

4月13日 13:21分 建工修复(300958)股价快速拉升

定名“高山”,长城魏牌首款MPV正式官宣,腾势D9最直接竞争对手

能“嗅”出百余种食材气味源!容声双净无边界506冰箱带来新奇体验|全球速看料

天天热消息:审计师考试难吗?报考后如何学习?

多地下调医保单位缴费率 职工待遇不受影响

全球快资讯:美国CPI超预期回落,有色有望上行

当前速讯:杭州临平启动“我教爷爷奶奶学英语”志愿服务

首季全国批准项目用地预审同比增51.7%

全球新动态:桑葚酒的做法视频_桑葚酒的做法

读诗使人灵秀_读诗

谷歌母公司 Alphabet 领投人工智能初创公司 AlphaSense 1 亿美元

创造营2020什么时候播(创造营2020节目播出时间介绍)-天天快讯

联特科技:光模块产品包括SFP+、QSFP+、QSFP28、QSFP-DD、OSFP等各种规格