与 Daniel Jalkut 的程序员访谈






4.69/5 (12投票s)
欢迎来到我们持续进行的 Code Project 开发者访谈系列,在这个系列中,我们与开发者们交流他们的背景、项目、兴趣以及痛点。本期我们采访的是 Mac 开发者兼播客主持人丹尼尔·贾尔库特 (Daniel Jalkut)。
欢迎来到我们持续进行的 Code Project 开发者访谈系列,在这个系列中,我们与开发者们交流他们的背景、项目、兴趣以及痛点。本期我们采访的是 Mac 开发者兼播客主持人 丹尼尔·贾尔库特 (Daniel Jalkut)。
你是谁?
我是丹尼尔·贾尔库特 (Daniel Jalkut),Red Sweater Software 的创始人。我居住在马萨诸塞州 阿灵顿,就在波士顿附近,并在我的家庭办公室工作。
您做什么?
我于上世纪九十年代中期开始在苹果公司工作,当时我负责 Mac 的 System 7 软件。后来我转到 Mac OS X 框架组,在 Mac OS X 最初开发阶段以及 Mac OS X 10.2 期间,我为 Core Services 组开发软件。
在过去的几年里,我一直致力于开发各种自己的应用程序,并通过网络和苹果的 Mac App Store 出售。
我最受欢迎的应用是 MarsEdit,这是一款桌面博客编辑应用程序。
我还开发了 Black Ink,这是一款填字游戏解谜应用,以及一些实用工具应用程序。
我与我的朋友 Manton Reece 一起主持一档名为 Core Intuition 的技术性、谈话类播客。
您的开发环境是什么?
与其他大多数 Mac 和 iOS 开发者一样,我大部分时间都在使用苹果免费的集成开发环境 (IDE) Xcode。
我几乎完全使用 Objective-C 进行开发,这不仅是因为它是开发苹果技术的首选语言,也因为我欣赏 Objective-C 简洁的哲学。像 C++ 这样的语言对我没有吸引力,因为它们丰富的特性提供了太多机会让人沉迷于“取巧”的解决方案。我更喜欢 Objective-C 的限制,并结合一些经过验证的设计模式,这些模式能清晰地指明大多数问题的解决思路。
对于通用脚本和 Web 编程,我倾向于使用 Python,并喜欢使用 Bare Bones Software 的 BBEdit 来编辑它们。我还花一些时间使用 PHP,因为它的 Web 框架中无处不在,并且我使用一些基于 PHP 的包,例如 WordPress 和 Vanilla Forums 来驱动我的网站部分内容。
最后,作为一款具有所见即所得 HTML 功能的博客编辑器开发者,我花费大量时间处理苹果 WebKit 库微妙的行为。他们内置的 Web Inspector 是调试渲染和性能问题的宝贵工具,并且在涉及任何基于 Web 或 JavaScript 的流程时,它还能快速原型化潜在的代码解决方案。
您对哪些新工具、语言或框架感兴趣?
我对苹果在 LLVM 和 clang(他们的编译器虚拟机和 C 前端)方面的持续进展感到着迷。他们开发的技术使得在代码运行之前就能检测到 bug(clang analysis)变得越来越普遍。
我也很好奇 LLVM 技术是否能让人们用任何自己选择的语言编写代码,并能够将其动态转换为另一种语言。我猜想,作为一个行业,我们正朝着一个越来越技术无关的世界迈进,在那里,将数据高效地推送到需要的地方将是首要考虑。
您最讨厌的编码习惯是什么?
我对样式和约定有很多坚持,这些大致符合 Steve McConnell 所著的优秀书籍 Code Complete 中的规定。
总的来说,我努力遵循 DRY(不要重复自己)的原则,尽可能限制方法和类的规模,倾向于 组合优于继承,并且你几乎永远不会发现我写一个带有多个返回语句的函数或方法。
您是如何开始编程的?
尽管我的父亲是一名专业的软件工程师,开发编译器,但我相对晚才开始真正的编程。青少年时期,我曾用 Commodore 64 上的 Basic 语言鼓捣过,并在我的 Amiga 电脑上做了一些教程级别的 C 语言实验。
直到我接触到 Mac 并开始攻读计算机科学专业,我才开始足够深入地编程,能够着手完成一个项目并将其进行到底。我在 Mac 上的第一个重要项目是经典 UNIX 游戏“robots” 的图形用户界面实现。在这个游戏中,主角在一个二维网格上移动,吸引愚蠢地前进的机器人角色,以便让它们相互碰撞然后爆炸。
开发者社区是如何影响您的编码的?
我们这些从 Mac 开发者社区出来的人,受益于一些长期以来相互支持的联系。表面上竞争激烈的开发者们坐下来喝杯酒、吃顿饭,甚至分享有用的代码片段,这并不罕见。iOS 的成功吸引了大量新开发者加入这个圈子,其中许多人都接受了这种态度,并帮助这个培育环境变得更加壮大。
我们的社区在博客、Twitter、GitHub 和 Stack Overflow 上都有强大的存在。所有这些平台都出色地服务于我们大多数人互相帮助的基本愿望,同时可能在过程中稍微炫耀一下。
苹果产品的开发者社区当然深受苹果公司自身的影响。我们大多数人对苹果公司都有爱恨交织(或者至少是爱与痛苦)的关系,因为苹果公司以其对个别开发者特定需求的冷漠而闻名,同时又继续坚持其关于软件应如何构建以及软件对最终用户应有的价值的崇高理想。
您会对一个新兴的程序员提供什么建议?
我给初学者最重要的建议是,你必须先发布一些东西,然后才知道自己是否真的适合做这个。一个自称是汽车或摩托车爱好者却从未让他们的爱车上路的人,会受到无情的嘲笑。软件开发的目的是创造能够轻松扩展以造福成百上千、乃至千百万人的解决方案。而发现你的软件在造福人们方面做得如何或有多糟糕的反馈循环,是成为一名更优秀的程序员的关键部分。