ROS软路由论坛 ROSABC.com 网络方案网络工程交流

 找回密码
 会员注册

QQ登录

只需一步,快速开始

硬件是技术,软件是艺术

2014-9-23 04:28| 发布者: admin| 查看: 361| 评论: 0

摘要:   这是我最近一段时期的感悟,每天脑子里都有种呼之欲出的冲动,   所以我非要把它说出来不可:硬件是技术,软件是艺术。   首先需要澄清的是这句话绝不是说硬件没有艺术可言,任何学问是都有艺术的, ...

  这是我最近一段时期的感悟,每天脑子里都有种呼之欲出的冲动,

  所以我非要把它说出来不可:硬件是技术,软件是艺术。

  首先需要澄清的是这句话绝不是说硬件没有艺术可言,任何学问是都有艺术的,

  所以任何反对意见不应该针对此处而提出……


  然后,这句话在我看来究竟意味着什么呢?

  在最近学习技术的过程中,加上以前学习研究的经验,

  我发现任何技术无论你从什么起点出发,最后终究会回到硬件上来,终究会!

  不管你用什么入口去接触计算机或者更宽阔的学术,

  在经过各种无论多么人化的思考和社会化的教育之后,

  最后的根本仍然是与大自然的接口——硬件——当然,

  大自然(也许是上帝)早已经将艺术融在了万物当中,

  人类的艺术也是从TA那里学来的罢了。

  

  

  如今对我而言,软件已经是纯粹的艺术,已经感受不到以前有的技术感,

  你可以不用任何硬件而进行程序设计,一切仅仅通过与心灵的对话就可以完成……

  

  

  以前我有个误解,我认为一门编程语言的诞生由以其编译器被制造出来的那一天决定的,

  无论这门语言有没有人用,只要编译器造出来了,它就是活的,就是完备的,

  或者用行话说:它被实现了(implemented)。

  但是我导师则更进一步,他说,只要这门编程语言的规范(specification)出来了,

  即定义出来了,那就可以宣布诞生了,

  无论存不存在某个编译器的具体实现,因为某个具体实现也是根据规范设计出来了,

  即是说,实现仅仅是根据规范的实现,有没有它,并不影响定义。

  是的,他是对的……

  

  

  大学计算机的第一课不就是教我们如何区分软件和硬件吗?

  Q:什么是硬件?什么是软件?

  A:计算机里面任何可以被你踹一脚的东西叫做硬件,其他的,叫做软件。

  

  

  所以,软件是个纯抽象的东东,创造软件也可以是个纯思维的过程,脱离硬件而被创造。

  

  

  说到这里,似乎我又要澄清一个东西了,我这里表达的一些理念绝不是

  割裂计算机软件和硬件之间千丝万缕的关系,

  因为计算机科学里还有一个我们经常谈到的理念——硬件和软件其实并没有严格的划分标准,

  它们对立统一而构成有机整体,

  恩,是的,没问题,毫无疑问是这样的,任何一个学计算机的人都应该知晓这点。

  但这是计算机科学内部的层次,是在实际设计中需要考虑的工程视角。

  

  

  而我这里欲与阐述的是计算机哲学,以及类似计算机科学的其他科学体现出来的设计学哲学。

  所以我把软件彻底脱离开来了,但这仍旧与计算机科学当中的

  ——在不同的的层次(level)来看计算机而得到不同的视野(view)理念——

  一脉相承。

  

  

  

  

  软件,它其实是哲学,absolutely!

  对于像我这种能明白软件原理却又不工作在这行的人来说它就是这样,

  而对于真正在软件业工作的人来说,它至少是设计学或者组织学,

  而且不得不考虑基于的特定硬件和其他软件环境。

  

  

  以前我在一篇日志了谈到8年前,我看到Larry Wall说

  “当你精通Perl语言之后,甚至可以用Perl来写诗”,

  当时不理解,后来也不理解,但现在我理解了。

  对于这句话,也许你会像我以前想的那样:

  1、肯定是要完全精通Perl语言,了解它的一切用法,记住该语言的方方面面之后才能达到这个境界;

  2、如果我还不能用Perl写诗,那说明我还不精通它,所以我得返回去继续学习Perl……

  

  

  好的,让我来告诉你真相吧,上面两句话都没有找到真正的内涵……

  

  

  我先举2个简单的例子:

  假设有一名工匠,每天只是使用铁凿按照指定的制造要求来打造不同的器具,

  这样,5年,10年,20年,甚至一辈子过去了,虽然他的打造技术会随着时间熟能生巧,

  最后达到了炉火纯青,但他终究只是一名工匠,却不是一位雕塑家。

  

  

  作为程序员,每天只是用某种自己掌握了的语言不断地在实现客户的软件需求而已,

  这样即便是编50年的程序,也只能得到一个熟练的称号,归根结底还只是一个程序员,

  任何时候你都无法用Perl写诗……

  

  

  刚上大学时,传闻程序员等于二级钳工,当时我觉得是戏称,

  现在在我看来,中国目前的软件行业从业者完全就是这个情况,

  有甚而无不及的是,现在大量的编程人员薪水可能还不如二级钳工,这也合情合理,

  现在鬼都说自己能编程,有初中高级程序员证,但是二级钳工证你有么?

  人家那可是真正的技术活,比起一些人的复制粘贴、东拼西凑可是要强多了……

  

  

  回到问题上来,上面的情况的根本症结出在哪里呢?

  用我的话来说,缺乏“个人浪漫主义”,这个词包含了两个至关重要的概念:

  1、个人,即个人创新,个性化的东西,与别人能够明确区分开来的东西,

  可以让你有勇气说“这是我的”的东西;

  2、浪漫主义,即那种脱离肉眼看到的那些东西的灵感和意识,

  那种把手头上的工作内容和工具分离的视角,最最重要的,是那种想表达艺术的欲望。

  

  

  有了第一条,就有了技术创新,有了核心竞争力,对于工程技术而言这已经很不容易,

  此时,工匠和程序员都有了自己的创新产品,开了公司并被市场肯定,

  你可以一辈子这样下去,无可厚非。

  但是工匠仍然只是高级工匠,程序员仍然只是高级程序员,

  只是这时可以被称作“优秀的”,与此对应的上面的只能被称作“无为的”。

  

  

  只有具备了第二条,才可能达到艺术。此时,工匠和程序员不再是为了挣钱而创造

  (至少这一次,不单纯为了物质利益),而是为了纯粹表达心中的理念在创造,

  这便是表现艺术,这时候,铁凿和编程语言成为了表达艺术的手段了……

  此时,你可以用Perl表达任何你想要表达的东西,包括诗歌。

  

  

  那么,你需要在完全精通它之后再来写诗歌吗?

  不需要,鲁迅先生在写作的时候并不认识新华字典上所有的字,

  你在创作时同样没必要背出所有的库函数……

  

  

  还有一个问题是,它的表现力如何?

  是的,任何东西有它的局限性,这也是为什么这么多不同的编程语言并存的原因,

  在合适的情况下使用合适的工具,这应该是个不错的建议,

  用铁凿是不足以完全一件完整的艺术品的。

  但是另一方面,虽然Perl的表现力可能不完全满足你此时的灵感,

  但是大多数情况下是没关系的,词汇的多少只是影响你表达的精准度和原始的表达欲望,

  但是通常仍是可以表达的……

  

  

  毋庸置疑,任何一篇用六级英语写成的文章应该都可以用四级英语来重写,

  只是表达方式和效果的区别罢了。

  统观所有哲学类书籍,书中的词汇可以说全部是常用字,但是表达的意义却丰富多彩……

  

  

  我们经常说所有的单词我都认识,可就不明白整句话的意思,

  所以,当你在扩大单词量的时候要有所思考了,切勿盲目扩大词汇量……

  再者,当你觉得这门语言不足以表达你的意思的时候,你要反思,真的是它表现力的问题吗?

  世界上没有哪篇文章是必须使用某个词才能写出来的吧……

  

  

  当然,如果你确实觉得这门语言束缚了你的思维,

  你可以放弃它,追求艺术的人又怎么会是教条主义呢?

  用VB和Delphi很容易实现的功能,没必要非用C和C++来实现……

  我承认以前我对某些东西有过偏见,现在我都能包容它了,

  大家只是工作在不同的场合、视角或者层次,应该合作而不是拼得你死我活,有你没我……

  

  

  综上,任何时候你都可以用你手上的工具进行艺术表达,只是你越精通你的表现力就越强罢了。

  屈原用很多生字来创作《离骚》和《天问》,没问题,

  你用简单的if和while来创作hello world和foo bar...

  

  

  我可以用我的C语言源代码来表达我的欣喜、忧伤和愤怒,就是这种感觉了……

  

  

  说点离题远一点的,我认为任何诗歌都应该是浪漫主义范畴的,不存在用记叙文构成的诗歌,

  如果整篇诗歌都是在表达客观事实,那么无论它对应的多么工整,

  多么有韵律,也是徒有其型而无其神罢了。

  就像这样:我


  我学习,

  我研究,

  我思考,

  我存在。


  先不说这写得好不好,这能算三言绝句吗?

  不是说,骑白马的不一定都是王子,还可能是“师傅”吗……
  

  再者,你完全可以把《万用表的使用》这种说明书文字排版得跟诗歌一样,但是它能是诗歌吗?

  没有个人浪漫主义,就不会有真正的诗歌存在……一定要有自己的东西,还得是浪漫的……


  好了,软件就说到这里了,

  想学好软件,掌握编程语言和编程工具那些是最低最低的要求,然后是学会如何设计,能够独立处理整体与部分的关系,最后是哲学和艺术,毫无疑问的三重境界……

  这篇文章有点长了,也算是我对于计算机软件和硬件的最后一次领悟和总结吧……

  有了上面对于软件详尽的讨论,硬件不是太大问题了。

  如开头说的,任何可以被踹一脚的东西叫硬件,其他的,叫做软件。

  现在可以这么说,任何纯艺术可以表达的东西叫做软件,其他的,叫做硬件。

  这句话跟Knuth大师说的一句话有异曲同工之处,可我忘记大师说那句完整的话了,

  对于这种大师,我还真不敢引用错,555~~ 应该是在《C专家编程》这本书当中,大致如下:

  “任何可以被描述并交给计算机执行的是技术,剩下的,是艺术”。

  任何技术,如果你不了解硬件的话,你始终是带着脚铐跳舞……

  你不是在跟大自然打交道,而是在跟设计者在打交道……

  这也是为什么我只喜欢C语言一样,因为我可以对我发出去的任何指令负责,

  是我叫计算机做这些事情的,并且我基本上知道发生的一切。

  而对于C++,当编译了类之后,我变得心里恐慌而不知所措……

  而对于那些有虚拟机的语言,如Java和C#,就更不知道做了什么了。

  所以,对于那些基于虚拟机的程序设计语言的使用者,

  深入学习和剖析底层虚拟机是个永恒的好建议……

  另一方面,对于那些解释型语言,我就更恐惧了,

  因为我能看到的只是返回的结果,功能确实被实现了,但根本不知道刚才发生了什么……

  为了对你所做的事情负全责,为了更好的控制软件,你有必要了解硬件,

  刚才计算结果没有正确返回不是因为程序的bug,而是因为电压不稳定造成的……

  刚才的DHCP没有分配到IP地址不是因为进行了MAC地址的过滤,

  而是因为无线信号强度和连接稳定性不够……

  你当有这样的视野,不然就不能成为一名合格的工程师……

  距离、方向、温度、风向等等这一切物理指标都应该存在你的视野里……

  如今,对我而言,已经到达了这么一个时刻,我想回到硬件一次,

  虽然我曾经在嵌入式系统上做过了一次这样的尝试,

  但那准确地来讲,还只是固件(Firmware),还不是硬件(Hardware)。

  当时虽然我买了电烙铁和万用表,但是使用得很少。

  PS:Firmware在台湾叫做分位,这里故意提一下是为了纪念我第一份工作——

  佛山普利华公司,台资,做数码相机分位研发,

  而我现在又要去佛山工作了,这一切真的是缘分吗,

  佛山就是我的命中归宿吗,我原来注定是佛山人……

  

  

  这一次到了佛山之后,我来开始真正造天线了,无论是八木、平板,还是叠双菱,嘿嘿,我来了……

  我现在才感觉玩技术的都是玩硬件的,或者说至少是玩硬件的……

  昨天晚上我把无线网卡放在铁锅里下载了一部电影,无所谓是否放在了它的抛物线焦点上,

  

  但至少通过铁锅反射回来的电磁波得到了某种程度的汇聚,嘿嘿,这感觉很好……

  所以,硬件是技术,软件是艺术!

  

  

  对于无线路由破解方面,虽然我现在已经有破解的十几个AP——各种方法都有:

  WEP直接破的、WPA跑字典破的、WPS暴力枚举破的,

  但是能够随时上网的还真没有,全当个人研究了……

  

  

  

  

  这东西我已经决定了,不能放下,因为在了解了这门技术之后,

  我已经不敢一个月不关注无线路由破解方面了,

  兄弟姐妹们,你们绝大多数人都不知道你们处在多么危险的境地啊,

  你们根本不知道敌人的武器有多么强大,简直就是让人战栗,

  而我也没有任何办法可以帮助和保护你们,

  之后我会再总结一些方案给大家用来抵御一些简单和低级的攻击。

  

  

  就连我也害怕被人入侵,因为对手可能只是外行,但他使用的工具可能是异常恐怖的,

  而且由于各种道德和素质的原因,他可能做任何损人不利己的事情,

  冠希哥其实又没做错什么事情,怎么都来批斗他而没人去惩罚那个公开个人隐私的可耻之人呢……

  

  

  在我看来,公开个人隐私的人是必须得到严惩的!

  但是,世界的不是靠写在纸上的法律和规则运作的,而是靠人来运作的。

  "This world is not run by the rules or laws written on the paper,but run by people."

  ——《Mafia》

  我就因为这一句话而爱上《黑手党:四海兄弟》这部游戏的,大结局的时候:

  原来我们曾经用生命去为之付出的一切,都只不过是由人设计的一张网……

  

  

  

  

  所以,如果你接上了无线网络,而你的电脑上又有潜在的可能成为“各种门”的照片,

  请考虑转移到其他地方再连上无线网络。

  或者时不时观察一下局域网内是不是有人连接到你的电脑,

  如果有,那么恭喜你,We got company...

  最后,献给大家到目前为止我的研究得出的一些结论,

  希望能够帮助大家增强一些安全,遗憾的是,只能增强一点安全,没有办法完全避免:

  绝对来自我原汁原味的研究,为了照顾那些可能没有耐心看到这里的童鞋们,

  我另开一篇日志《如何防蹭网和增强无线路由器的安全设置》,请笑纳,也欢迎转载,

  这是我第一次希望大家转载,目的只是为了让大家避免一些本可以避免的损失,

  毕竟能在这里看到我的文章的大多都是我的朋友,或者朋友的朋友……  (作者:Safirst C.Ke )
 

不良信息举报Q:2000617
新用户7天后可回帖!

软路由

不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流

GMT+8, 2025-10-31 20:13 , Processed in 0.032352 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部