VC++ 学习笔记(二):VC++与C、VB和C#
罗马不是一天建成的,VC++的也不是凭空产生的——它一直标榜自己的从C发展而来的。VB好像是专门为了羞辱VC++而创建的。C#呢,是微软类C语言的新秀——其实也不新了。乱吧?貌似挺乱的,其实这里有章可循。
纯粹的C++是从C发展而来的,是要用OO这个理念来度化广大C程序员,让他们离苦得乐的。纯粹的C++语言很单纯,很好,不像VC++那么面目可憎。但是,语言都离不开类库和开发环境,否则就不足够复杂,不足以处理复杂的大系统。我刚刚看了STL,内容太少。MFC才能满足日常所需——有人跟我提过QT,我没玩过,暂时也不想玩。但是MFC貌似太复杂了,是的,不是太困难,而是太复杂。它把太多东西暴露给开发者,还告诉开发者可选,这其实很操蛋。每个人都有选择综合症!!!这又契合了我的口头禅——没有复杂性,不足以解决问题;有了复杂性,我们的多数经历都被消耗在复杂性带来的副作用上。
VB是据说这个地球上用的最多的语言,我不想去考证这一点。但是我能理解,因为它简单。并且它的子集被用来作为Office套件的粘合剂(VBA)。还是PowerShell出来之前,Windows许多内嵌脚本的官方语言(VBScript)。照我来说,VB最适合非应用软件开发人员啦。“不要问我从哪里来,我的故乡在远方”。用就行,别问那么多。它的简单照亮了VC++的笨拙和臃肿。
C#是个好语言,也是我之前用得最多的语言。它也摒弃了C++的复杂性,舍弃了一堆一堆的宏定义。将所有的数据和操作都拿类包装起来,不说再说什么全局的。也不再分什么头文件和实现文件。它的设计理念是尽量简单、自然,易于理解和使用。把库建在大一统的.Net Framework上,使用Visual Studio这个微软独有的IDE,不让你多花一点力气在跟主题无关的事情上。它被垢鄙的地方主要是性能问题,当然这是VC++的主场。但我想说其实考虑了性能、并做了适当优化的C#程序并不差,适合大多数情形。让我YY一下,我觉得花同样的时间,C#的程序员的代码质量会稍微高些,因为打击他们自信心、分散他们注意力的东西太少了。
与C相比,C++有了面向对象这个利器,使它在建模和代码复用等很多方面有了突飞猛进。但它保留了大量的宏定义,以及全局函数。甚至还有意打破封装,搞出了友元这种机制。从C++到VC++,不单是多了个IDE和MFC类库,它还搞出来一堆的基础类型。此外它修改甚至隐藏main函数,让人如坠雾中,实在可恶。
但是,一好遮百丑。希望它宣称的性能能够让我们愿意承受这些苦痛,阿门!
VC++ 学习笔记(二):VC++与C、VB和C#的更多相关文章
- VC++ 学习笔记(序):神一样的语言
		总的来说,我觉得VC++是一门神一样的语言——它是公认最强大.最复杂的:它一切以效率为第一要务,却又不肯落伍,拼命兼容现在的新的语言设计特点.本来在别的语言很容与就避开的问题,在这里要用很高的技巧去设 ... 
- 孙鑫VC学习笔记:多线程编程
		孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010 HQU Email:zgzhaobo@gmail.com QQ:452728574 Latest Modified ... 
- VC学习笔记:对话框
		VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date:O ... 
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
		python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ... 
- WPF的Binding学习笔记(二)
		原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ... 
- AJax 学习笔记二(onreadystatechange的作用)
		AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ... 
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
		源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ... 
- JMX学习笔记(二)-Notification
		Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ... 
- java之jvm学习笔记二(类装载器的体系结构)
		java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ... 
- Java IO学习笔记二
		Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ... 
随机推荐
- 【6_100】Same Tree
			Same Tree Total Accepted: 97481 Total Submissions: 230752 Difficulty: Easy Given two binary trees, w ... 
- 从原生APK反编译,拿到界面,用于mono for android
			从原生APK反编译,拿到界面,用于mono for android 1.用apktool反编译apk,得到xxx.apk.de 2.从xxx.apk.de\res\layout 3.复制所有xml到M ... 
- 在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet
			免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ... 
- Lintcode 175 Invert Binary Tree
			I did it in a recursive way. There is another iterative way to do it. I will come back at it later. ... 
- 【Python自动化运维之路Day6】
			1.递归思考题,阶乘 使用递归方式(函数)计算: 1*2*3*4*5*6*7*8*9*10的值 def func(num): if num==1: return 1 return num*func(n ... 
- 递归获取XML元素
			看到的一道题,用递归获取XML元素.... static void Main(string[] args) { string xmlContent = @"<FileSystem> ... 
- Hbase split的三种方式和split的过程
			在Hbase中split是一个很重要的功能,Hbase是通过把数据分配到一定数量的region来达到负载均衡的.一个table会被分配到一个或多个region中,这些region会被分配到一个或者多个 ... 
- 配置Hadoop开发环境(Eclipse)
			参考博文: http://blog.csdn.net/zythy/article/details/17397153 http://www.tuicool.com/articles/AjUZrq 注意事 ... 
- DDD Example
			PART 1: http://www.infoq.com/presentations/model-to-work-evans PART 2: http://www.infoq.com/presenta ... 
- 插件~使用ECharts动态在地图上标识点~动态添加和删除标识点
			之前写过一个Echarts的文章,没有基础的同学可以先看这<上一篇>,对于一个地图和说,我们在初始化之后,你可能被在地图上标识出一些点,当然这根据你的业务去标识,而如果每次更新数据都加载全 ... 
