热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

《黑客与画家》--2黑客与画家

这本书果然充满了离经叛道的言论,作者PaulGraham果然”骨骼清奇”在这篇文章中作者说出了,黑客与画家,等等艺术家的共性,也说出了与科学家的区别。记得黑客曾经也是我的梦,在

这本书果然充满了离经叛道的言论,作者 Paul Graham 果然”骨骼清奇”

在这篇文章中作者说出了,黑客与画家,等等艺术家的共性,也说出了与科学家的区别。

记得黑客曾经也是我的梦,在我对计算机一无所知的时候,我也想着自己有着一日能成为黑客,那时自己并不知道黑客是什么,只知道,是很优秀的程序设计者,对计算机世界一无所知的人。直到后来入了ACM这个大坑,忘了曾经还有这个梦(:( ), 不过,ACM的标志告诉我,发现问题,解决问题。从此我也以此为学习之道,而不在想着要成为 xx员,xx师了,只是想着要去做些事情。啊~,言归正传

作者将黑客视为计算机另外一端的产物,他认为黑客是一种设计者,像画家一样的艺术家,所谓编程,其实不是一件技术活,而是一件艺术活。计算机在他们手里仅仅是一种表达媒介而已。

黑客通过实践学习编程,这一点在高校教育中几乎不存在,高校中教人编程是给你讲讲语法,然后去做做题目,甚至让学生能够在“纸”上写好了,再去编程,这导致很多学生,害怕去写,害怕出错,其实会想我自己的学习编程的结果,语法无非是和编译器打交道,编译器说你哪错了,你找出来就是一种学习,而真正有意思的是设计,因为对于同一个问题,或者说功能,的程序并没有标准的“解”,也就是可行解是很多的,而决定什么是好的这是一个艺术活。

黑客类比于创作者,另一个学习途径是通过范例。通过看优秀的源码,而我却很少看…可能我还不是一个创作者,仅仅满足于能够用自己的方式优雅的解决某个问题吧,我认为看源码是个很费事的事情。或许这是我应该去改变的,希望我学了软件工程之后能对此有更深的想法。

作者的另一个观点是优秀黑客与普通黑客的区别在于能不能“换位思考”, 也就是能不能将程序写的让用户能清晰的明白,某一方面就是添加好的注释,不过通常我哥人的习惯是很少去看注释,一个问题是英文写的注释太长,另一个原因是更希望通过样例来看懂。或许好的创作者还应该考虑到这个因素,将注释简单化,将设计通用化。

这里作者说的其实就是软件工程的设计,作者说的黑客和软件工程师的区别不就是黑客是创作者,而软件工程师是工人吗?


推荐阅读
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
author-avatar
姓赵的妖女
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有