
Luis Ibáñez 在谷歌公司芝加哥分部担任高级软件工程师。本网站表达的观点仅代表他个人。您可以在 github 上找到他: http://www.github.com/luisibanezand,在 Twitter 上: http://www.twitter.com/luisibanezHe。他之前曾在 Kitware Inc. 担任技术主管,并在开源 EHR 代理 (OSEHRA) 担任开源社区发展总监。在 Kitware,他密切参与了医疗成像应用开源软件的开发,特别是与 Insight Toolkit (ITK) 的合作。Luis 坚决支持开放获取,并且是 Insight Journal 的编辑之一,Insight Journal 是一份强制验证可重复性的 OA 期刊。在与其他讲师的合作下,Luis 在 2007 年至 2013 年间在伦斯勒理工学院 (RPI) 以及 2011 年至 2014 年间在纽约州立大学奥尔巴尼分校教授了开源软件实践课程。Luis Ibáñez 于 1989 年在哥伦比亚桑坦德工业大学 (布卡拉曼加) 获得物理学学士学位,并于 1994 年在同一所大学获得光学硕士学位。他分别于 1995 年和 2000 年在雷恩第一大学 (法国雷恩) 获得 D.E.A 和博士学位。1999 年,Luis Ibáñez 加入了北卡罗来纳大学教堂山分校神经外科部,并作为 MIDAG 和 CADDLab 小组的成员参与工作。他在 UNC 的工作与应用于图像引导手术的 2D 和 3D 配准算法的开发有关。他还作为 INSIGHT 配准和分割工具包的开发人员参与其中,该工具包由美国国家医学图书馆赞助。Luis Ibáñez 于 2002 年 2 月加入 Kitware, Inc.,在那里他是 Insight Toolkit (ITK) 的主要开发人员之一,与其他开发人员和用户社区协调其维护;他也是图像引导手术工具包 (IGSTK) 的主要开发人员之一,并参与制定了 Insight Journal 的操作原则。Luis Ibáñez 坚决支持开放获取以及科学出版物中可重复性的验证,并且是 ITK 培训课程和传播开源原则的活动中的常客。2014 年 8 月,Luis 加入谷歌公司担任软件工程师,在纽约市的公司工程团队工作。
作者评论
感谢这篇有趣的文章!
很高兴看到对单元测试和代码覆盖率的强调。
希望这些概念能定期融入软件工程师的教育中。这应该是一种早期培养的习惯。
作为一名 C/C++ 程序员,我当然赞同应该接触底层原理的观点。
然而,无论在教育还是编程中,拥有多层抽象都是有价值的。
只要我们不阻止开发人员在变得更加好奇时深入研究代码,提供更高的概念抽象就无妨。
我们可以逐步推进
从:Python 模块中的 Web 服务器
到:由三个 Python 类实现的 Web 服务器,调用大约五个函数,所有函数都来自之前的模块。
到:C 实现(在 nweb 的情况下),调用三个 C 函数 { log(), web(), main() }
到:检查 nweb 函数反过来调用其他八个 C 函数 { getenv(), chdir(), setpgrp(), signal(), open(), read(), write() 和 close() }
我完全同意,通过使用较低级别的方法,学生将更接近于理解事物的工作原理。尽管如此,为了充分理解,他们应该进一步研究进程和进程间通信(以理解 signal() 和 fork() 的含义),以及理解文件系统和管道(以理解 chdir()、open()、close()、read()、write() 的含义)……并遵循这个逻辑,我们可能还应该深入研究这些函数在内核代码下的源代码实现,以真正了解它们是如何工作的……,然后我们必须理解驱动程序……,并且可能引入一些汇编代码,并在电子学方面打下基础……
当然,这正是 Raspberry Pi 设计的目的。问题是如何逐步实现,而不会引起抵制。
讲师面临的挑战是:如何创造条件来激励学生进一步深入研究这些主题?
一个不错的选择是远离讲座,并通过学生与编程平台的直接互动来触发对较低级别的学习。
这也是促使我们在纽约州立大学奥尔巴尼分校创建一个 HackSpace 的原因之一。旨在创造非正式的环境,让学生可以按照自己的节奏,在自身好奇心的驱动下,更深入地探索。这消除了时间、课程主题和共同地点的人为限制,这些限制使得学生很难在准备好时逐步探索主题。