⑴ 一个好的程序员至少应该具备哪些条件
楼上的几位显然误会我的意思了,我并不是说不应当写文档加注释注重团队精神,看看下面的一篇文章,那位三天就写出UNIX的他需要写文档注释和团队精神吗,他用不着。哪个高手没有一点傲气和自信,他之所以敢对用户说:拿到你想要的,然后滚蛋,你已经很幸运了!是因为他有这个资本。天才本就不循规蹈矩,那样他就不叫天才了。
MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder,
and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。
Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还
是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据
说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前
身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在
Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN
TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封
喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP
Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿
个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你
怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯
伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把
Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同
事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯
发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是java Spec和JINI
的主要作者之一。
John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄
聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实
战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC
上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein,
然后再接再励,doom, doomII, Quake...每次都把3-D技术推到极限。J哥哥的简历上说
自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人
是很幸福的,因为各大图形卡厂家一有了新产品就要向他“进贡"
,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听
取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以
上,也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过
呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还
是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们
叫“达分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意
思。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别
人“Da Vinci”就不知所谓乐。嗯,扯远了,打住。
David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发
员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然
后说:“who can't write an OS in a week?",也是牛气冲天的说。顺便说一句,D爷
爷到NT3.5时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。
D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。 日常交谈fuck不离口。
他面试秘书时必问:"what do you think of the word 'fuck'?" ,让无数美女刹羽而
归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite
word"。于是她被录取乐,为D爷爷工作到NT3.5发布。
Don Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,
学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到 Anders Hejlsberg,
或者学linux不知道Linus Torvalds一样,不可原谅啊。为了让文章完整,就再罗唆几句
吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别
人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高
爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞
出了个 Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比
赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n
美分奖励等等都是耳熟能详的,偶就不饶舌乐。
顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可
谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没
有学究气,不失轻快跳脱。记得几年前读Concrete Mathemathics,时不时开怀大笑,让
老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那
完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我
们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带
谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。
高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他
捐献了好多作品,都可以在网上看到,比如着名的Mathematical Writing,MMIXWare,
The Tex Book等,更不用说足以让他流芳百世的Tex乐。
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche
老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主
要作者(另一个是大牛人Rob Pike,
前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是
计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山
仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是
他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不
知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,
于是C在随后20年成就了不知多少豪杰的梦想和光荣。
Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很
快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell
Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX
代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清
净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只
好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码
里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器
编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译
器。
(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系
统 。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开
发 Unix的猛人,UTF-8的设计人。他还在美国名嘴David
Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的
是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设
计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix
Programming Environment 和 The Practice of Programming 的作者之一。如果初学者
想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写
出了Unix下第一个基于位图的窗口系统,并且是着名的blit终端的作者。当然了,罗伯
伯还是号称锐意革新的操作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多
少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is
Irrelevant,痛斥当下系统开发的不思进取,固步自封的弊病。虽然这篇文章是罗伯伯
含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越
来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的
革新越来越少。
就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不
遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道
了。具有超强容错和负载平衡能力的分布式文件系统GFS
(现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统
也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的
说),更不用说处理海量并行计算的各式google服务了。Rob在System Software
Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到
他错了,应为google关心。google网络了大批功成总是试图吸取系统研究的最新成果。
想必Rob Pike在google很幸福。愿他做出更棒的系统。
Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M.
Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前
身是B,而B是Ken Thompson一手做出来的)。两人1983年分享图灵奖,是有史以来少数几
个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,
所以就成了唯二的乐) 一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛
不衰近30年,至今生机勃勃,DMR此生可以无憾的说。
D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有
成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和
逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成
形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D
不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。
Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来
人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接
受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来
领导自己的团队在1995年和1996分别推出了Plan9和Inferno操作系统,又用多少人知道
呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond
在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁
知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次
采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当
然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意
识奠定了C广为流传的基础。
最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜
欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就
是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开
发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也
就长留你我心中乐。
P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。
据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写
得最少;但说到编程,Ken爷爷才是当之无愧的老大。
Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短
路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。
其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,
无非是戴爷爷在1956年为了展示新计算机
ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最
短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒
太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙
着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专
业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表
在Numerische Mathematik的创刊号上,权为捧场。:-)
EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较
深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。
戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工
作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要
知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情
愿,但经不住项目负责人Bram和Carel的轮番 “吹捧”:我们知道实时中断让您工作变
得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,
接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博
士论文,顺利戴上博士帽。
让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日
没夜地工作了8个月,就搞出了Algo60,也因此获得了 1972年的图灵奖。因为Algo60,
戴爷爷发表了一篇石破天惊的文章:Recursive
Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,
所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。
而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员
都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科
学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是
专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴
爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的操作系
统,并培养计算机科学家。几年后,THE Multiprogramming
System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统
没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小
组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就
喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作
来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷
从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。
EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。
Anders Hejlsberg,微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手
做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作
品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当
如Anders的说。李维的<>里已详细讲述了Anders的传奇故事,我就不用费舌了:
http: //java.mblogger.cn/iexploiter/posts/1505.aspx
Artima上有Anders谈C#的系列访谈。MSDN上有一段Anders导游的录像 。有兴趣可以去看
看牛人的丰采。
⑵ 大家,零基础做一个合格的程序员需要多久
学习编程是一个由浅至深的过程,报班是正确的选择,不过从一开始就盲目自学C语言或java c++等语言,不仅对于编程零基础者毫无帮助,往往会使零基础者丧失信心。
那么从哪里开始呢?我这里为你大概列出一些方向,帮助你初步理解编程,但是学习的过程必须任然是一个枯燥乏味,且需要不停练习的过程。
什么是编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。下面是重点,是零基础者需要知道的。
编程分为硬件编程和软件编程。
先由硬件编程讲起(零基础者必须了解,了解有助于认识编程,)中央处理器又叫cpu,(这里用大白话讲述),cpu有很多向外的线 (术语叫做引脚),它们中有一根线我们以它作为电压0参考,其余的线有两个功能:1.读出这点接入的电路的电压,2.输出电压我们又定义电压U,以U为界限将读取输入的电压分为0,1。在PC,笔记本电脑上,1指电压低于-12V,手机里1指电压高于3V,其他情况为零。对于一块1600万色的屏幕,它可以显示16777216(就是24个2相乘)中颜色,24根线每根线电压为0或1,那么刚好有16777216组合,屏幕会根据每根线的电压大小判断该显示的颜色,对1080P的屏幕有1920*1080个点即2073600(小于21个2相乘),21根线的组合可以涵盖屏幕上的点,显示时,21根线告诉屏幕那一个点亮,24根线告诉屏幕亮什么颜色,当21根线代表的点不是这一点,这一点颜色不会变化,拿小米电视来说1s一个点最多可以改变30次,超过24次人眼就感觉不出来。
好了你该问知道这些有什么用,那么我来告诉你,人类最初的编程语言就是这样工作的,我们叫它“汇编语言”,现在除非你在intel等半导体公司工作,汇编语言已经不用了,零基础者千万别学汇编。下面举一个例子,让一个点显白色 MOV XXX BIN(00000000000000000000000);XXX是自己为那24根线起的名字,括号里24个零。
下面是重点,我想在屏幕上显示0,那就包含了很多点,因为屏幕的显示是1个个点构成的,一个人不可能输完,我可以在另一台计算机上编一个软件(下面会讲到),我写
print(“0”);软件会自动翻译成汇编语言,让cpu驱动屏幕一点一点显示。由“print(“0”)”到汇编语言的过程我们叫编译,为了让软件识别我们也应该制定一套标准,那就是C语言和C++语言(以下统称C语言),C语言简化了编程,但是它只可以用于操作硬件,由一台电脑编完后输入硬件系统,这是初学者迷惑的地方,为什么编出的程序可以在windows上运行,因为windows提供了一套模拟硬件,它模拟的是最早的IBM-PC(许多老师都不知道)。不同的cpu用的C语言是不一样的,但他们的基本结构,赋值规则相同,现行的教材都是以IBM-PC为标准,只要你学完谭浩强的教材,当你接触到新的硬件看完生产商的规范最多半个小时后,你就可以用了。
下面是大家关心的,软件编程,大多数人想编的是在windows上运行的。
现在软件编程包括windows编程,安卓编程,OX编程,linux编程。先讲一下原理。拿windows编程来说,微软公司用C语言编写了能使intel amd的cpu驱动显示器显示的程序,就是windows操作系统,你要编写的程序写完后告诉windows,windows把你写的程序当作想点数标一样的反应。微软自己定义了一套语言,但是开发者学习成本有很高,C语言模拟器又满足不了它的要求,于是微软开发了C#(C#有着与C相同的结构赋值规则),它是专门为windows设计的语言,又是windows开发环境,C#最大化的减少windows开发难度,同时增大不同人间的协作性,WPS、AE、QQ影音都是用C#编出的,只要你学过C语言和C#你就可以在windows平台开发。最后说一下JAVA,随着图形界面的流行,各个系统操作日益相同,如windows,linux,MAC OS,java应运而生,它可以把你写的程序翻译为相似平台的语言,从而在各个平台运行。初学者自学不要碰JAVA,只有学过C语言,C#你才能看的懂。
最后总结一下:
编程首先要学C语言(可以不学C++),数据结构(当编写大程序如wps,学过数据结构能增加运行速度,不学的话也可以)这两者可以让你明白编程的基本规则。
如果你想编写硬件系统,如单片机,windows,安卓(编是一个人是不可能的但该可以),那么你学过C语言,数据结构下一步你要学习ARM,或51单片机,对ARM,或51单片机编程与硬件编程原理相同,之后你就可以看操作系统底层。
如果你想编软件,你要看情况,编windows你要学C#,学完就可以了。编安卓你要学先学JAVA,才能接触谷歌专为安卓修改的JAVA语言。编iOS ,mac os你要学习Object-C。
⑶ 程序员为什么要一直改bug不能一次性写好吗
作为一名程序员,我也总是在调试,Bug总是防不甚防的出现,这个过程真是有趣又痛苦,最后我觉得习惯就好,一次性写出完美代码是每个程序员不可实现的梦想。
程序员作为一项工作,是有任务有指标的,比起慢慢写出完美程序解决所有问题,大家更喜欢快速看到一个可以执行解决部分问题的程序,此时完成比完美更重要。
没有哪个程序员可以写出完美的代码,即使高能又伟大的公司也做不到这一点,想想看你的手机软件是不是经常提醒你该更新了,连微软都在三天两头的让你打补丁,不是吗?
⑷ 【程序员·随身听】玄学:机械键盘
大家好,感谢收听【程序员·随身听】。
这一期准备讲一讲程序员群体中的一种玄学:键盘,具体来说,是机械键盘。还有一种玄学,是耳机。如果说键盘是程序员的武器,那么耳机就是程序员的铠甲,不过,这一期我们先不讲耳机了。
先阐释一下啥叫玄学,玄学是指那些不可知,不可思议,科学不能解释,不能涉及的学说。
这样来说,似乎玄学带有贬义。不过,事先声明,本期中的玄学并没有贬义的意思,而是带有一种膜拜,或者说,想要亲近,却不得要领,没有途径,而带有一种酸葡萄心理的感情色彩。
说到这里,可能有些听者琢磨出来点味道,好家伙,原来你不是圈里人啊。
对啊,我不是圈里人,默哀三秒钟,一,二,三,然后擦干眼泪继续说。
到这里,作为厚道人,我得说,如果您想通过本期音频,得到关于机械键盘的指导型知识,就得失望了,因为我也想得到这方面的知识。如果您知道,还希望您能够通过微博告诉我。我是真的想知道啊。在此,先声谢过。
那么,我说点什么呢?才疏学浅的我,只是想把这个话题抛出来,谈一谈自己的一些观察和看法。如果有幸能够抛砖引玉,得到高人指点,到时候任督二脉一通,我再做一期指导型的音频。
那么,我们开始进入正题。
键盘作为电子产品的输入设备,比鼠标要出现得早。这很正常,因为进入图形交互系统的时代,我们才有鼠标的需求嘛。直至如今,键盘仍是我们在电子产品输入内容上,不可或缺的设备。
我们知道,一般来说,键盘有两大类,薄膜键盘和机械键盘。还听说一种,叫静电容键盘,静电容键盘太少见,我根本没见过,网络上说,静电容键盘是利用电容容量的变化来判断按键的开和关,在按下按键后,开关中电容容量发生改变,从而实现触发,整个过程不需要开关的闭合。正是由于无物理接触点就可以实现敲击,因而磨损更小,使用寿命更长。更稳定、迅速、全键无冲突、无比灵敏。通常在大型医疗设备上能够见到,也可作为比较昂贵的高端游戏外设。
在静电容键盘还没有进入主流前,我们就不说它了,回到薄膜键盘和机械键盘上。它俩的区别,简单来说,薄膜键盘的键,表面看起来是一个个的,其实,每个键帽是依托在一整张薄膜上的,按下一个键,薄膜上就压下去一个点到印刷电路板上,发出电信号。而机械键盘,那真是一个键,就是一个电信号的开关。所以,你就知道,为啥机械键盘要比薄膜键盘贵很多了,因为从工程学上讲,机械键盘的结构就比薄膜键盘复杂多了。
虽然,一般,机械键盘比薄膜键盘贵,但吊诡的是,早起的键盘可都是机械键盘。我小时候玩的小霸王学习机,就是那个一开机就发出诡异的声音——“小霸王,其乐无穷啊”,那就是机械键盘的。那时候还觉得敲键盘挺费力的。但如果,我们仔细观察下键盘的发展历史,就不奇怪了,就跟汽车一样,早期的汽车,纯手工打造,零件都是匠人一个个做出来的,但随着汽车行业的发展,追求产业化,模块化,纯手工打造的汽车必然退出主流汽车市场。键盘也是如此,随着技术发展,产业化的进步,薄膜键盘应运而生,一下子降低了成本,还增加了便携性。为什么还增加了便携性呢,因为由于机械键盘每个键都是一个个小开关,它需要一定的体积,而薄膜键盘只是一个按的动作,因此薄膜键盘能够做的很薄。为啥苹果的 MacBook 系列能那么薄?所以,即使它的键盘体验被称为敲铁板,它也不可能换成机械键盘,只能在薄膜键盘的基础上,想办法提高键盘的舒适感。
按理说,机械键盘在薄膜键盘的冲击下,就要退出历史舞台了,就像软盘被U盘取代,机械键盘的好兄弟,机械鼠标(就是肚子里装着一个滚球的鼠标)被光电鼠标取代。但是,有时候,有些看似过时的产品,还能苟延残喘,甚至是复活。就像纯手工打造的汽车,可能还是有它的小众市场。历史上,这样的事例也不少见,比如说拍立得,前段时间,我的朋友还用拍立得给自家的娃拍照留念;比如说广播,要知道电影电视的兴起,那可是把无线电广播冲击的奄奄一息,但现在广播在汽车的普及下,在新的生活节奏下,又生机盎然。我作为程序员,都要在蜻蜓FM做广播了。
这里插一句,关于小众产品的复活,大家可以看一下爱奇艺上王自如的脱口秀,《科技相对论》,其中第一季的第三期就专门说的小众产品的复活。
书归正传,继续说我们的键盘。机械键盘为什么能够复活呢?我觉得,一个原因很重要,那就是有很多工作,都是要长期伏案于键盘之前的。像编辑,像程序员,一天敲键盘几个小时那都是少的。键盘作为生产力工具,那就相当于战士的武器,谁不想要一把得心应手的武器呢?这时,我们就怀念起机械键盘那独特手感和反馈感,甚至那噼里啪啦的敲击声。这就是我认为机械键盘复活的重要原因。
另外,程序员作为一个群体,也有自己的文化。文化是虚的,是需要在具体事物上表达的。作为程序员的一个重要生产力工具,键盘必然被程序员赋予了文化符号。为了个性化的彰显,为了追求差异化,甚至仅仅是为了鄙视另一个程序员,就这样,机械键盘就在薄膜键盘的势力包围中,强势回归。
现在的机械键盘,不仅种类很多,颜值担当的也很多,甚至有很多绚丽夺目的小功能,什么呼吸灯,跑马灯,夜间背光等等。我们接下来就说说机械键盘的门派。
在机械键盘的江湖,有四大门派,轻快如风的红轴,内外兼修的茶轴,嚣张直爽的青轴,直来直去的黑轴。
门派之别,来源于对武术的不同见地,但毕竟都是武术,有相同的根源。那机械键盘的共同原理是什么呢?
首先,不管是什么轴,它的机械轴都是由开关帽、开关帽固定卡、弹簧、触点金属片和底座构成,还有一部分的机械轴里还有跳线。这几个部件中,最关键的部位是开关帽,弹簧和触点金属片,它们的不同导致了触发的压力,手感和按键的寿命不同。先说弹簧,弹簧的圈数越少,弹簧的反馈压力就越大,黑>青>茶>红,再说开关帽,开关帽作用于触点金属片,按压导致触点金属片连接或者断开回路,发出电信号,开关帽作用于触点金属片时产生阻力,阻力就会让我们感受到传说中的段落感,再加上开关帽不同的嵌套结构,作用到底座的键程不同,会带来不同的节奏感,红轴和黑轴就是直上直下的感觉,而茶轴和青轴则有一定的阻尼感。然后说说触点金属片,机械键盘单轴寿命是2000万次到8000万次不等,如果一个键被用坏了,一般来说,就是触点金属片损坏了,可以说触点金属片决定了机械键盘单轴的寿命。(要知道,薄膜键盘的寿命一般来说是30万次,如果一个键,你一天按100次,30万次就代表着这个键你能用3000天,小十年呢,机械键盘单轴几千万次,可以说,在你厌烦它之前,是用不坏的)说完最关键的三个部件,最后说说键帽,键帽是我们敲键盘是最直接触摸到的,一般是不同质地的塑料,键帽上的字有很多工艺,比如丝印,激光雕刻,激光刻蚀,热升华,二色成型,丝印是最容易让字摩擦刮花甚至消失的。
热闹的江湖只有四种门派么?当然不是,除了红黑茶青,还有绿轴,橙轴,白轴,灰轴,甚至怪轴,它们有的是不同于上面几种轴的力度,有的是用于空格键这样比较特殊的按键上,它们都比较稀有,有的已经停产,比如白轴,有的是厂家定制款,比如雷柏的橙轴,所以,这个江湖还是很热闹的。
讲完了机械键盘的基本情况,我们来说说玄学部分吧,那就是机械键盘的体验。
有人说,青轴是键盘里的春天,因为青轴触发深度最深,段落感最强,噼里啪啦的声音最大,打字的时候清脆爽快,像沐浴在春风中敲架子鼓。据说,使用青轴容易被你四周的人揍。。。
有人说,黑轴是公认的游戏轴,玩游戏黑轴是不二之选,因为黑轴没有段落感,直上直下,一触即发,打一盘游戏,尽显激情。
又有人说,茶轴是键盘中的绅士,优雅冷静,它全面兼顾,介于打字和游戏之间,相较于青轴,段落感弱了很多,相对于黑轴,又不是直上直下,因此,也有人会觉得它中庸没有个性。
最后说,红轴,红轴一般推荐给女生,因为它和黑轴一样直上直下,打字轻快,同时,它压力系数最小,毫不费力。
听到这里,不知道你能不能明晰的分出四种轴的不同,其实,真让你感受四种轴,可能没有那么明显的不同,如果把那些更小众的轴加上,如白轴,橙轴,灰轴,绿轴,你更加区分不出来。但是被人表达后,人为的强化了不同。这就产生了玄学。玄学的诡谲之处在于,你要根据这些体验去选你想象中的键盘,大概率的可能性是与你的想象不同。就是说,听起来很有道理,指导起事情来,可能要抓瞎。所以,我觉得买键盘,还是要买有眼缘的,当个外貌协会也不错,有机会呢,还是要去感受一下,觉得喜欢就好,没必要根据四种轴的文化定位来选。即使你选了黑轴,该团灭还是会被团灭的。
关于上面说的体验,没有接触过如此多的种类,或者没有长时间在键盘上码字的体验,可能很难有共鸣。你也可能会觉得这些人好矫情啊,不就是码字敲键盘么,说的神神叨叨,故弄玄虚。是啊,是有些故弄玄虚,文化不就这样么,虚虚实实,人类就是这样一种喜欢听故事的动物啊,把你心目中的神抽丝剥茧,还原历史情境,他还会让你感动的起鸡皮疙瘩么?所以,我们还是把机械键盘理解为一种程序员可爱的文化吧。
总结一下来说,机械键盘,相对于薄膜键盘,在体验上没有质的飞越,打字也不一定更快,也不省力,可能只是释放了本能中对节奏的渴望,但是却给程序员带来了很大的愉悦,创造了话题,也是程序员文化中不可或缺的一部分。
感谢您的收听。
⑸ 一个四年的程序员,一般工资在多少合适
程序员的行业根据环境,地域,行情,技术等因素来决定薪资,所以除了专业的数据分析平台,我个人只能给出一个大概的范围吧:
我们按照一个正常的程序员来讲述他的待遇;以北京为例,小明毕业于普通二本,大学学习了Java和Android,毕业来到北京找到了一份Android工程师的工作,税前6K,他觉得工资多少无所谓,主要是让他接触到企业项目,学习更多新知识,工作一年后,Android的基本技术小明已经完全掌握了培空启,并且每天都勤奋好学,学到了不少高深技术,于是他去跳槽,找到下家谈到了12k,这个时候的小明堪堪一年亏如工作经验,由于技术不错,很快的担任了项目重要角色,这样一干就干了三年,公司每年给他涨幅1k-2K工资,这个时候的小明已经四年经验了,税前工资达到了16K,如果他愿意跳槽的话,他可能拿得到18k,20k或者更高,但是他没有,因为这三年虽然项目做了非常多,但是他发现,重复的工作太多了,他的技术一直停滞不前,他也结婚,生子了,以前下班回家都是学习到半夜,到有女朋友后,下班会陪女朋友看电影,玩游戏,到现在下班后遛娃,辅导功课,他已经没有动力再去学习新的知识了。
虽然小明知道现在的待业已经不配如算高了,但是重在安逸稳定,所以他并没有跳槽的想法,哪怕看到网上一些言论说四年的工资多少,他也直接无视,但是程序行业日新月异,老东家坚持不住了,倒闭了,于是小明又要重新找工作了,这个时候的小明五年工作经验,税前16k,于是他写简历,因为他有资历,了解了现在的行情,洋洋洒洒写了一份很精致的简历附上期望月薪30k,可是面试的过程并不顺利,很多问题他都答不上来,要么就是基础忘记了,要么就是新技术他不会,于是他开始迷茫了~~
之后的故事我就不编了,大家自己脑补吧。
回答题主的问题:四年程序员大概在10-25k之间,大部分是15k-20k区间
⑹ 资深程序员分享如何预防颈椎病
王先生作为一个自身的程序员,从事编程工作多年,再加上平时喜欢玩电脑多,长时间在电脑前坐着,以至于得了职业病。手指、手腕、肩颈部都经常疼痛,眼睛干涩红痒,肚子也变将军了。后来在家SOHO,颈椎问题更为严重。在网上寻求解决方法,并进行自我治疗,有了明显的好转,将心得体会记录于下,望对使用电脑工作的人有点用处,尤其是从事编程工作的朋友们。 颈椎问题的严重性:会引发脑部供血、脊柱神经、睡眠等问题。 原因:久坐少动,肩颈部肌肉劳损以至颈部骨骼、软骨受损。 我的解决过程:先是每周按摩一小时。你要想有点效果一定得到正规的地方,还得受得了疼。按一次,得疼三天。有是有点用,回想一下,这不是花钱找罪受么?然后去了医院,医生给开了一些药,问了,大概都是缓解症状的,不能治本。我一向不同意程序员30岁转行的观点,难道我过不去这个坎?转而采取日常生活中的自我治疗。一般来说,主流的意见是多运动,包括体育运动和针对性的保健操。我在家实践了两个月,3天一次长跑或羽毛球,每天一次散步和多次保健操。颈椎疼痛有一定的缓解。再后来进一步从源头上着手,调整使用电脑时的坐姿,坐在电脑椅上时微微向后倾斜,选择有头枕的电脑椅,这样可以对颈部起到很好的支撑作用,降低颈椎病的发生。还有硬性的减少坐在电脑前的时间,游戏不打了,工作想问题时就起身,这个也不易,对工作有一定影响,但也是重要方法之一。还有些方法是调整桌椅高度及坐姿,桌椅一定是符合三个90度:坐着膝盖90度、大腿和上身90度、肘部90度。肘部一定要有依托,至少有椅子的扶手,我现在是可以升降的办公桌,两肘都放在桌面上;另外,买电脑椅时特别选择了一款腰部支撑比较不错的电脑椅,效果非常不错,原来腰部的轻微疼痛现在没有了,特别早上起来感觉很轻松。现在我的颈椎问题已经好多了。 总结:方法是综合的,但效果最明显的就是注意使用电脑时的坐姿和睡眠健康。健康的坐姿,可以让我们工作、健康两不误,良好、科学的睡眠姿势和适合枕头保证我们有充足的睡眠时间、较高的睡眠质量。另外,千万别觉得没有时间想健康问题,否则结果是不得不想。