Software Engineering

Windows:
1、第一用windows是windows98;约是10多前。记得当时是第一次使用电脑是在小学上微机课,打开电脑,windows的图标出现,似乎是“打开了通向未来的窗口”,从此没有在离开过窗口,尽管对它并没有好感。依稀记得当时在windows系统上做的第一件事是玩扫雷(因为蜘蛛纸牌不会玩),然后在windows的帮助栏上使劲点。那时觉得好神奇,点一下就有东西,而且点了始终出现同一个东西,然后关了再点,好奇却又充满恐惧,感觉像在一片美丽的森林里迷路了。现在想来确实可笑。
10多年过去了,我长大了,微软也还在,还是那个窗口,只是我从当年的小孩变为了青年,而微软也来到了他的“中年”,再过几十年它还会在,只是到时它应该也会跟我们一样,“看着夕阳落下尽管心有不甘却无能为力 ,然后也会恐惧能不能看见第二天的太阳”。
2、比尔盖茨催生了微软,微软催生了windows;倒过来也成立。第一次听说微软是在学校的微机教室的墙上——“比尔盖茨简介:微软公司总裁”。接下来就是“科技是第一生产力”的大红字。从windows1.0到windows98到windowsxp,再到windows 7,以及如今的Windows10.windows操作系统走过了几十年的路,从它的图标就可以看出:
这里写图片描述这里写图片描述这里写图片描述这里写图片描述
从扁平到立体,从淡色到鲜艳,见证了高科技时代的到来,也见证了windows系统的成长壮大。同时也看到了windows系统或者微软始终想跟上时代发展的步伐,从以前的引领潮流到现在的紧跟潮流“害怕被时代所抛弃”。不得不感叹windows确实辉煌过,但它只是“曾经是个王者”。它把比尔盖茨推上了世界首富的宝座,同时他也随着比尔盖茨的退休而一去不返。这一切的来源即是比尔盖茨与乔布斯的交易,即IOS的壮大。原本是出于对抗IBM的交易,却催生了致命的毒药,作为帮手出场的苹果在挤掉IBM后,转身开始威胁微软,最后作为扮演windows终结者的OS X已经迫不及待的举起了屠刀。
3、那么windows(或者微软)的问题在哪,OS X的优势是什么?
保守、自大还有一代不如一代的Leader。
比尔盖茨的卓越,使windows走上巅峰, 个人电脑操作平台的集大者。养成了自大的“臭脾气”,以及看到了乔布斯率领苹果在创新的道路上撞得头破血流而产生了保守的情绪,最后史蒂芬鲍尔默来了,他“成功”帮助windows(微软)从以技术为目的的技术公司改变为“以营利为最高目标的吸金器”,最后微软到了悬崖边上。后任者都只是在拼命的拦住不让掉下去。都不愿去改革,去改变自身,说到底还是自大,始终认为“我是老大,我没错”。其中最明显的例子就是.NET开发的衰落。
如果.NET开发的衰落是自大的后果,那么(使出洪荒之力推荐这篇文章http://blog.jobbole.com/15545/)windows系统的更新换代的加速则是微软保守的表现。从以前1至2年的更新速度到如今半年甚至几个月的更新速度,使得windows系统越来越粗糙,创新乏善可称(或者说创新不够大胆)。这也是我到目前为止都不更新还在用win7的原因。当乔布斯率苹果在改革创新的路上披荆斩棘的时候,微软就应该想到成功的果实是不可能一起共享的。最后OS X成功了创出了自己的路,再回头看见了10几年依然如故的windows,“兄弟你过时了”。
这里写图片描述这里写图片描述
从史蒂夫鲍尔默开始的“拜金主义”,使windows从服务性的工具变为了敛财的聚宝盆,而萨蒂亚纳德拉想扮演救世主(比尔盖茨也愿意垂帘听政)却是能力不足,还有时机真的错过了!苹果如日中天,2014IBM宣布了自己开发操作系统的消息,这是IBM的自我救赎。某种意义而言IBM和微软是一样的,如果IBM能从濒死的状态回来,那么下一个死的就很可能是微软;如果IBM自我救赎失败,那么微软离倒闭就只剩18个月了。也许有些夸张,但是现实1如此。我想萨蒂亚纳德拉最能用来反应当前的windows系统(以及微软)的状态。首先,纳德拉是光头这点与鲍尔默一样,如同他们都明白微软CEO是向董事负责,而不是向用户负责一样;其次是他比鲍尔默时尚,也就是他更能跟上潮流,这点他与现在的库克一样(库克紧跟潮流,玩“同性恋“,:)),这点如同他的上位一样,充满了创新,正如微软的一位董事说的一样”1年前他(纳德拉)还在乘乘务舱出差呢“;最后就是他是工程师出身,这点他与比尔盖茨一样,毋庸置疑他是务实的、专注技术的。总结一下微软(windows)的发展历程就会发现,在我们历史上发生过相似的事—–明朝。如果把微软(或者windows)比作一个朝代,明朝与它何其相似;建立者真知灼见、雄才伟略,传承者拼命发展、方向偏离;末代统领想挽救危亡,却心有余而能力不足。纳德拉同志与崇祯一样,勤勉,但是天赋不行就是不行,补不回来。
而反观OS X的苹果公司虽然也有问题,但是苹果有一个优势就是苹果的主要业务是手机,或者说操作系统是他的兼职。他还有大量的尽力以后可以用来发展OS X,实在不行不做操作系统,苹果也死不了。但是微软不行,windows也不行。微软没了windows一定死,windows没了微软就不叫windows了。不过windows有个优势,它创立者还在,比尔盖茨已经承诺要回来帮忙了;而乔布斯可能会在天上帮忙——保佑苹果。
当然瘦死的骆驼比马大,windows不会立即”死去”。不管怎么样,它都是第一市场份额的操作系统。不过按照目前微软公司的状态也离死不远了,无非是时间的问题。所以,微软使出了杀手锏—-开源,把本钱拿出来—拼了。所以我个人坐等windows的源代码。
以上是个人对windows操作系统以及微软公司的前景的一些看法和担忧。
下面对是对windows操作系统个人的一些评论:
首先作为操作系统,旨在在简化程序员和计算机用户工作的程序和函数库的集合(摘自《计算机系统设计原理》),windows无疑是佼佼者。windows的界面和用户友好性是不错的。开创了窗口的模式来与使用者进行交互,无疑是让原本复杂的计算机操作变得简单,并且凭借windows良好的可视化界面,吸引了大批的用户。最明显的比较就是DOS系统以及UNIX系统和windows系统,相信在黑白和彩色之间选择,用户还是偏向windows吧(包括我自己)。
其次就是规范。windows相对于其他操作系统有一套自己稳定且严格的标准(或者协议)。打开c盘,里面的文件名从win7到win10都是一套标准,真是这种规范性使得windows管理资源(包含硬件资源和信息资源)都变得高效。而且由于版权等各方面原因(具体在上面的描述中有提到)微软始终是独立开发windows系统,所以他比较与LINUX等开源的系统有着自身的”整洁”和有序性。而且没有“衍生品”,这点熟悉LINUX和UNIX系统的人最清楚。
(这方面推荐文章http://www.360doc.com/content/10/1225/13/4850421_81195731.shtml
然后就是兼容性了,相信对windows最大的诟病就是兼容性,它为微软而生,微软也因它而活。是福还是祸呢?
再其次就是由于系统功能归于强大而带来的次生问题—-漏洞和维护性差。在没有官方授权的情况下,个人或者组织想对windows系统做维护几乎是不可能的。而且由于系统文件的巨大和繁多,造成系统运行速度会被拖慢。据了解windows系统下的木马和病毒是其他系统的总和还多,而且系统自身还不够足够的问题目前似乎还做不到“魔高一尺道高一丈”,正常情况下不装特别的安全软件的windows系统的计算机不出个把月就会有明显“”中毒”迹象。
最后就是安装windows系统的问题了,一方面它有自动升级功能,方便用户升级更新;另一方面就是重装系统会非常的麻烦(相对与其他系统),步骤繁多,时间很长,资源消耗巨大。
最后我想用一系列的数据展示一下这个曾经的“王者”———————-Windows,一个改变了世界的操作系统,一个正在衰落的操作系统。
链接:http://www.zhihu.com/question/30097324(点击阅读原文前往)

(据说一个人最多能理解的代码量是1万行左右,所以,,,)
Windows XP 大约40,000,000行代码。
Windows Vista 大约50,000,000行代码。
Windows 7 大约50,000,000行代码。
Windows 7开发的时候有23个小组,每个小组约40人,也就是将近1000人。
这23个团队是:

●Applets and Gadgets (小程序和边栏应用)
●Assistance and Support Technologies (协助和支持技术)
●Core User Experience (核心用户体验)
●Customer Engineering and Telemetry (用户工程和遥测)
●Deployment and Component Platform? (部署和组件平台)
●Desktop Graphics (桌面图形)
●Devices and Media (设备和媒体)
●Devices and Storage (设备和存储)
●Documents and Printing (文档和打印)
●Engineering System and Tools (工程系统和工具)
●File System (文件系统)
●Find and Organize (查找与组织)
●Fundamentals (基础)
●Internet Explorer (包括IE8 down-level)
●International (国际化)
●Kernel & VM (内核与虚拟机)
●Media Center (媒体中心)
●Networking – Core (网络 – 核心)
●Networking – Enterprise (网络 – 企业)
●Networking – Wireless (网络 – 无线)
●Security (安全)
●User Interface Platform (用户界面平台)
●Windows App Platform (Windows 应用平台)

至于复杂度就不说,底层算法什么的已经不用介绍了。

最新数据:
这里写图片描述
不过现在想来却发现,原来硬件更多是根据软件来看硬件的性能和优劣,而软件则是根据自己的直观数据信息呈现出来。程序出错程序会自己爆出问题,而硬件出错,却要用软件来呈现,自己却不能自我检测。比如,windows的自我检测功能,自我更新提示和自我安全环境的扫描;而电路板就算你把它砸了,他也不会”呼救”。
好了贴出微软中国和苹果中国的首页链接,点进去看对比,一目了然了。
苹果中国:
http://www.apple.com/cn/
微软中国:
https://www.microsoft.com/zh-cn

Dev-C++
Dev-C++是一个Windows环境下C/C++的IDE(集成开发环境)。
这里写图片描述
第一次接触还是大一,当时只是觉得vc的功能太多,太杂不方便,所以搜了一下C/c++的编程软件,选择了Dev-C++。
dev-C++诞生与1988,具体的公司已经不可考据。现在网上的dev大多是dev爱好者独立的在原版本的基础开发的。
由于Dev是外系软件,还得汉化。其实也简单,网上下载后解压,然后安装,不停点击下一步,最后把汉化包放入指定文件夹,完成启动。
这里写图片描述
相对与vc的强大以及复杂(杂乱无章)的功能,Dev显得简单,朴素,专业性强一些。
由于原开发公司停止了开发,所以它被广大的爱好者/公司以爱好的目的,继续开发。而且它是开源、免费的。这点对于广大中国同胞而言是充满吸引力的。也是因为没有明确的公司、组织、机构、个体去开发,所以dev的版本也不一致,大家用的不是很统一。
可能用的人少,这里简单介绍使用流程,用dev-C++(以下简称dev)新建项目:
这里写图片描述
然后dev的特点来了,它要求先把文件(工程)保存了在进行编码,所以在上图中点击了确定后,便提示保存位置。保存格式是.dev

这里写图片描述
开始编码:
这里写图片描述

以简单的hellowold为例:
这里写图片描述
点击上方的运行,就可行运行程序了。看最顶上的我的汉化后的页面能找到运行。如果您点的是\/(勾),就是开启调试。
这里写图片描述
上图是调试时的进度显示条。不过由于dev自身的缺陷他的debug能力不行,所以不推荐使用,我也很少用,而且dev开发小型程序使用没问题,如果是大型程序可能有问题因为它本身就是轻量级的,可能这也是他被使用的少的原因吧.在它进度条的左边就是各种参数的值的显示框。
这里写图片描述
上图是dev生成的项目文件。也是最为人诟病的地方。它对文件的管理缺少自发性。也就是它会在你所保存的文件夹下自动生成一系列的文件,不过你也可以灵活的选择在不同的文件夹下保存不同的文件。比如你可以统一把.cpp文件放在一个文件夹下,而工程文件放在另一个文件夹。这样也提高了文件的管理效率。当然对于用惯了vc等IDE的人来说,要手动去选择保存位置确实有些麻烦,但是用惯了dev会发现dev对文件的管理更为高效。
对于dev自动产生的5个文件:
.C是程序源代码文件
.O是编译后的对象文件
.win是编译配置文件
.dev是工程环境文件
.exe是可执行文件
如果对dev的最大感受除了简洁的页面,就是代码的规范性。它对代码的规范性要求极高。这也是个人认为对初学者最好的软件。随着it的火热,开发的工具也越来越智能化,人性化,而作为“孤魂野鬼”、”没人疼没人爱”的Dev面临巨大的危机。可能现在知道dev的人都少得可怜。不过正是由于它没有具体的开发公司,它不依附于市场,换句话说如果没人用他的话,它早在开发公司停止开发的时候就应该消失了,但是知道现在还有人用他,说明它生命力还是顽强。所谓没人管就是最好的开源。估计未来用它的不会增加,当然也减少不到哪里去(因为用它的人本来就少,再少也少不了多少)。
如今做一下小的C/C++程序,还是用它,因为它的规范性和习惯吧。
提一下GPL协议,因为dev是遵守dev协议的:就是把软件或者程序交付给用户的同时,原码也要交出去,允许用户自己开发、更改程序、软件。这是dev生生不息的源泉。
Dev-C++使用MingW64/TDM-GCC编译器。
编译过程大致为一下几部(这也是C/c++的通过编译流程):
http://www.ruanyifeng.com/blog/2014/11/compiler.html
1 、配置文件,编译的准备工作;
2 、读取配置文件,寻找标准库等的位置;
3 、确定编码的先后顺序;
4 、头文件的预编译;
5 、 预处理;
6 、 编译,个人理解为把程序代码转化为机器能识别的机器语言,通俗的讲就是把10进制转换为2进制;
7 、 结果
当然还有其他东西,在链接中有详细的解释,比如开发后程序的动态连接和静态连接等,这次不赘述。
有些东西就是个爱好,我想着也是那些现在还在默默更新dev的”做公益开发”的程序员的共同想法吧。在这里感谢他们。
欢迎留言讨论,windows和dev的未来!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Progress in software engineering has been remarkable over my professional lifetime. Our societies could not function without large, professional software systems. For building business systems, there is an alphabet soup of technologies—J2EE, .NET, SaaS, SAP, BPEL4WS, SOAP, CBSE, etc.—that support the development and deployment of large enterprise applications. National utilities and infrastructure— energy, communications, and transport—all rely on complex and mostly reliable computer systems. Software has allowed us to explore space and to create the World Wide Web, the most significant information system in the history of mankind. Humanity is now faced with a new set of challenges—climate change and extreme weather, declining natural resources, an increasing world population to be fed and housed, international terrorism, and the need to help elderly people lead satisfying and fulfilled lives. We need new technologies to help us address these problems and, for sure, software will play a central role in these technologies. Software engineering is, therefore, a critically important technology for the future of mankind. We must continue to educate software engineers and develop the discipline so that we can create more complex software systems. Of course, there are still problems with software projects. Software is still sometimes late and costs more than expected. However, we should not let these problems conceal the real successes in software engineering and the impressive software engineering methods and technologies that have been developed. Software engineering is now such a huge area that it is impossible to cover the whole subject in one book. My focus, therefore, is on key topics that are fundamentalto all development processes and topics concerned with the development of reliable, distributed systems. There is an increased emphasis on agile methods and software reuse. I strongly believe that agile methods have their place but so too does ‘traditional’ plan-driven software engineering. We need to combine the best of these approaches to build better software systems. Books inevitably reflect the opinions and prejudices of their authors. Some readers will inevitably disagree with my opinions and with my choice of material. Such disagreement is a healthy reflection of the diversity of the discipline and is essential for its evolution. Nevertheless, I hope that all software engineers and software engineering students can find something of interest here.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值