主题:【原创】也来说说Linux和Windows下的开发感受 -- 昔杨今雨
我从没否定坚实基础的作用,但这和有没有创意是两会儿事,你我真正的分歧在于你认为创意是在坚实的基础上产生的,或者是一种延伸,而我认为创意与坚实的基础是两个范畴上的不同概念,有没有坚实基础与能不能产生创意有点关系但没有因果关系。“Imagination is more important than knowledge”这句话耳熟吧,可别说是我说的啊。我的本意是区别菜不菜鸟的不在于是做VB还是改Linux内核,那是锻工与钳工的区别。 菜不菜鸟还是要看创意,长远看这是决定软件产业水平高低的关键因素。说软件是应用科学就如何如何,这与本主题有关联么?
了解你很不鸟Yahoo,但这与我的观点有什么关系,一个例子而已。 Google那点历史满互联网都是,从pagerank原理到其他什么的都是公开的,但这和做出来产生今天google这样的搜索效果是两回事。我前几个贴就说过,google是一系列创意的结果,做科研本身对创意要求就是最高的,这与坚实的基础有什么关系,难道是说最先想到去研究pagerank与搜索相关性的那位是因为从中学到大学数学一直都得满分才会这样想的? 至于华为那套一直在抄一直在改的哲学有什么好骄傲的,有段时间遇到一个自称在华为做过的程序员,人很聪名,反映很快,你点1,他就2,3,4都给你想出来了,唯一缺点就是如果你不点1,他永远也想不起从哪开头。看出问题了吧。
对你那个云计算,我说过是一孔之见,况且也没指望你能理解别人是如何能通过google几分钟而产生个观点这样的事。不过我说的emerging不是指的ruby这样的通用编程语言,我所指的是web上的应用
拿一个不说“1”不知道“2,3"的空泛个例来贬低整个华为研发人员的群体。没有意义,也没有价值。
能抄,能改是基本能力,如果连抄和改都不会,难道从娘胎里面学来的创造??
在电信领域里面,爱立信,阿尔卡特这样的老牌企业,一样被华为带来的巨大竞争压力压得喘不过气来。在即时通讯领域,MSN在中国,面对QQ的强势市场,被迫定位在中高端市场。这个就是你看不上眼的,只懂2,3,不知道1的土专家长期努力的结果。
既然你把mashup狂这样的标签乱贴,我只好给你讲点基本常识。MML的目标根本就不是通用语言。Mashup的目标是给予最终用户定制服务的自由和权力。MML的使用对象是最终用户,而不是计算机专家。理想是能够提供一种简单的,面向服务的,容错性强的描述语言。现有的MML,无论是Google Mashup Editor, Yahoo Pipes, JackBe,BungeeConnect都属于MML的先驱者。当然他们有的过于简单,有的过于复杂,和我们的目标和理想差的还很远。我们要做的就是,利用一切可能的手段和工具,缩短这个差距,或者是证明这个东西本身就是一个白日梦。
虽然现在C#和Java殊途同归了,总还是对用虚拟机的语言有些不放心……
例如以下14种Java编写的操作系统
请善用Google
第一个纯Java操作系统
贝尔实验室发明的SavaJe OS是一个纯Java操作系统,支持J2SE,已经得到强大的商业支持,LG已经采用了SavaJe做为其3G手机
SavaJe OS, an open standards-based, 100% pure Java platform for mobile phones
全文:http://www.savaje.com/
有关SavaJe的技术信息见:
http://java.sun.com/features/2001/06/savaje.html
http://sunflash.sun.com/articles/40/3/ja/4013
第二个纯Java操作系统*
一个开源的JAVA操作系统
jNode:
Java New Operating System Design Effort
http://jnode.sourceforge.net/portal/
http://sourceforge.net/projects/jnode/
JNode可能是现在开源的Java操作系统中发展最快的了。
至于JNode的性能:
http://jnode.sourceforge.net/portal/node/51
可以看到,同样硬件中JNode的性能已经达到了SUN jdk1.4.2的110%,用纯Java写的Java平台的底层的性能超过了C++写的Java平台底层!
至于jdk1.4.2的性能是如何超过C++的,请看NuclearJava.blogchina.com
它对jdk1.0已经几乎完全兼容,对于jdk1.5兼容度不到50%。
http://jnode.sourceforge.net/portal/node/174
大家可以下载ISO光盘镜像,用VMware安装试试:
http://umn.dl.sourceforge.net/sourceforge/jnode/jnode-x86-0.1.9.iso.gz
镜像共有40多M
JNode现在在0.1.9版,正在向它的主要release版0.2.0版进发。
一旦JNode发布,就将出现一个非常恐怖的现像:
将JNode移植到任何一个不支持bytecode的CPU上只需要改动几K的汇编代码就行了。
也就是说JNode一旦发布就可以支持几乎所有的硬件体系
http://www.koders.com/info.aspx?c=ProjectInfo&pid=ZK-Ps19mqSFzgjyC*FNiXw__
jNode -
第三个纯Java操作系统*
新一代操作系统JavaOS
引言
1997年5月29日,JavaSoft公布了JavaOS———为在微处理器上直接运行Java应用程序而设计
的一个高度精简的操作系统。
http://bbs.xmu.edu.cn/bbsgcon?board=Java&file=G.863078295.A&num=4
第四个纯Java操作系统*
另一个100% 纯Java 操作系统:
JXOS:
http://sourceforge.net/projects/jxos
第五个纯Java操作系统*
再来看看纯Java操作系统JX的情况:
http://www.embyte.com/shop_view.asp?id=23
只有200K。
JX可以装到一张软盘中,可以启动电脑,拥有图形界面,用这个启动总比用DOS启动电脑好方便吧?
这是JX启动后的抓屏:
http://www.embyte.com/upload/product/a2004112080640.jpg
第六个纯Java操作系统*
JOS
http://sourceforge.net/projects/jos
第七个纯Java操作系统*
KaffeOS: A Java Operating System
由于不太出名,我就不详细说了,大家自己查相关资料吧
http://www.cs.utah.edu/research/factsheets/kaffeosscrn.pdf
第八个纯Java操作系统*
leJOS:
Tiny Java OS for Lego RCX brick. Like its predecessor TinyVM, has tiny Java runtime, under 32K; works as replacement firmware for Lego; Hitachi H8300 processor. To be ported to more small devices. [Open Source, Mozilla]
http://lejos.sourceforge.net/
第九个纯Java操作系统*
SanOS
Minimal OS kernel for PC based server appliances. Lets you run java server applications without need to install host OS, only need normal Java HotSpot VM and Sanos. Description, documents, downloads, manifesto, links, contact. [Open Source, BSD]
http://www.jbox.dk/sanos/
第十个纯Java操作系统*
LogOS:
Linked object generation Operating System, and other Java on bare metal synthesis technology for embedded systems. Tools to make dynamic, classloadable programs without overhead of traditional OS and JVM software layers.
http://www.websprocket.com/
第十一个纯Java操作系统
关于Java Card 上的java操作系统:
http://www.gemplus.com/smart/rd/publications/pdf/Lag02gdc.pdf
第十二个纯Java操作系统
JBed
a Java-based Real-Time Operating System
详细介绍见:
http://www.microjava.com/jvm/software/jit/jbed2?content_id=695
JBed也是100%纯Java,连驱动程序都是java写的
第十三个纯Java操作系统
COSC
Microkernel-Based Educational Operating System in Java
http://www.cosc.brocku.ca/Project/info/javaos.htm
第十四个纯Java操作系统
Janos
Java-oriented Active Network Operating System
http://www.cs.utah.edu/flux/janos/
VB->C#的转变,并不仅仅是微软搞的花样,这种转变背后深层次的原因是现实世界的商业程序正由CS结构转向BS结构。即使在linux世界里为了应付这种转变,程序员也同样需要学习新的语言例如java或者php。以VB->C#的转变作为windows程序员面临困境的代表并不公平,这是所有开发商业程序的程序员所必然面临的挑战。现实世界的商业模式正在变化,无论unix、linux还是windows程序员都不可能独善其身的。
“更多机会接触深层次的东西,意味着更有机会成为专家,更容易保住饭碗。”这话也有问题,首先专家有很多种,除了精通编程技术的专家还要有精通领域知识的专家,后者在实际开发中可能更加重要。其次,即使按照操作系统分编程技术专家也有linux技术专家和windows技术专家之分,两者都是需要的。从现实情况来看,windows技术专家需求量还是远大于linux的。第三,正如你所说,linux更容易接触到深层次的东西,windows则相反,所以成为windows方面的技术专家更为困难,所以一旦学有所成,再加上庞大的需求量,饭碗绝对没有问题。
旁观了这段时间关于linux和windows的争论,感觉支持linux的多是面向系统管理或者科学计算这些特定领域的开发人员,这说明linux在这些领域确实具有一定的优势。其实谈linux和windows的优劣,都要结合相应的领域。空对空的说用linux可以看到源代码,可以接触底层技术,但是这些并没什么太大的意义。正如风北客所说,现在的程序员早已经细分了,并不是所有的人都关注底层技术,相当多的程序员更关注如何更有效率更好的满足客户的需求。对他们来说一个对底层技术良好封装的平台(例如java)才是最重要的。
我还是从外行的角度出发:
是不是Windows程序员还应包括 C/C++/API 和 C++/MFC呢?像C/C++/API这些东东是亚底层的东东?
还有几个问题: Linux + IDE = Windows ? (如果把Linux单纯理解为命令行模式, 或者可以说Linux是个高度发达的DOS?还有总听到linux程序员windows程序员,两者有什么重要和主要的不同?谢谢啦)
windows也有不使用ide的可能,他们之间最大的差别我想更多的在哲学的高度上。
不管windows还是linux程序员,都是从高级到底层都有的。windows程序员走在一条宽阔平坦的路上,路两边有路灯和高高的护栏,外面的人进不来,你也别想出去,你只能沿着微软帮你修好的路走下去,不要考虑其他方向。优点是路好走,速度快。
linux程序员恰恰相反,你走在一片旷野里,有很多羊肠小道,路面高低起伏,没有确定的方向,有的路开始走着挺顺,但可能突然就走到头了,不过你身上有个手电筒,想看哪里想走到哪里都没人管你,你高兴了也可以走到没有路的地方,自己踩一条出来,但有没有人跟你一起走就难说了。
Java我也很不熟悉,但是显然它要做的不是什么新的语言,而完全是一种分布式的计算模型,或者叫做操作系统也行,在每台机器上装一台虚拟机,什么东西都用自己的方式来一遍。
当然,按照以前SUN的估计,很快会出现Java通吃一切,最后把微软逼到也不得不采用Java模型的方式,它当然就立于不败之地,甚至往美好一点想,以后可以开发直接执行JVM的硬件,SUN公司在企业市场就更呼风唤雨了。
这个想法在90年代以前,确实是非常先进的做法,而微软也是心知肚明,而且他一时间还真没有办法回应。在以前,甚至包括现在他在服务器方面的支持还是没有SUN充分。所以这个跨平台的问题还真不能一下子通过绑定操作系统来进行。所以赶紧搞了一套新的标准起来。大家都可以看到,Visual J++,C#,.Net这些都是对付这个问题的。比起对付Novell,这个难度就大多了。当然,思路还是一样的,参见
我一向对这种夹杂太多某个具体公司私心的技术心存戒备,所以从来没有认真用过Java。现在虚拟技术起来了,如果每台机器上装一个用户模式下的小型Linux环境,那也是一样的,或者基于某个跨平台的库接口进行开发,比如python,或者gtk什么的,也可以实现安全的一次写好到处执行。所以我个人感觉Java开发方式有点过时。
谢谢啦, 如果有个具体的例子就更好了。不过可以看得出来,老兄是站在一个客观的角度来分析这两个OS的。
vb.net和C#光从语言上来说没什么区别了,现在有一些网站可以把这两种语言相互转换,而且VB.net网上资料非常丰富。我看国内的程序员都倾向于C#,但是在国外这两种语言的程序员都很多。
vb.net刚出来的时候引发了很多争议,如果说有关系, 我看类似于c和c++差不多。最主要一点,一个已经是OO了,另外一个只是based object。从这个角度看,学习c#会更好,语法方面更灵活。。
我们曾经有一个team,以前是做vb的, 为了保持传统,升级到vb.net ,过了一年做总结,都说不如直接上c#。.net体系的一等公民还是c#,混合语言编程做市场噱头不错, 维护是个灾难。
这个布局决定了很长一段时间他不会过时。 不管python也好,ruby也好,还是新起的scalar,erlang等等语言都可以稳健的部署到java这个平台上来跑,而且可以充分利用过去15年的积累。
从这个角度看,说java是一种os本身也没错。 另外嵌入式领域 java 本身可以做os的,硬件固化java os,这也是最早java要干的活。
就java语言本身来说,他可能是第一种大规模使用的专门设计的工业化语言, 这点是其他语言,包括c#也基本忽视的。微软是通过工具,而不是语言本身来体现这种工业化作风的。
你给出的大部分链接,我认为应该是原生支持java的os,本身并不是用java写的。用java来写os,需要芯片级别的支持,有一个翻译的过程。
我认识一些有10年左右c经验的程序员, 转换到java这块来说非常辛苦,因为思维模式无法转换。
他们习惯了意大利面条时的编程风格,更看重效率和算法,也习惯了简单低效的工作方式, 接触新社会以后世界几乎都崩溃了。
大约7,8年前,认识的一批powerbuild程序员也有此类问题, 大部分当时就转行了。
当然也不是全部,有些人就是学什么都是好手,还是取决于思维的习惯。