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学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- hdu 5098 双队列拓扑排序
http://acm.hdu.edu.cn/showproblem.php?pid=5098 软件在安装之后需要重启才能发挥作用,现在给你一堆软件(有的需要重启有的不需要)以及安装这个软件之前需要哪些 ...
- day5----正则
%a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间 ...
- UIScrollView滚动视图
一.基本知识 1.初始化 UIScrollView #import "ViewController.h" #define WIDTH[[UIScreen mainScreen]bo ...
- Servlet的几种跳转(转)
源地址:http://hi.baidu.com/awmtaplnaibmnxq/item/29d76f3dafcf00312e20c482 Servlet: 当然,在servlet中,一般跳转都发生在 ...
- FIM相关报错汇总
1.错误1:FIM在修改MA名字的时候报错: The management agent cannot be deleted or renamed because the working directo ...
- slick-pg v0.1.5 发布
这个版本的更新主要是: 增加了对 json 的支持 (PostgreSQL 9.3 正式版已经发布了,所以我适时加入了对 pg json 的支持.功能其实前两个星期就已经开发测试好了,但公司跟联邦政府 ...
- 给“.Net工资低”争论一个了结吧!
昨天我写了一篇<工资低的.Net程序员,活该你工资低>,底下的支持.争吵.骂娘的评论依旧像之前几篇园友的博客一样繁荣.公说公有理,婆说婆有理,这样争吵下去永远没有尽头.数据没有情绪,是公正 ...
- 让ASP.NET Web API支持text/plain内容协商
ASP.NET Web API的内容协商(Content Negotiation)机制的理想情况是这样的:客户端在请求头的Accept字段中指定什么样的MIME类型,Web API服务端就返回对应的M ...
- phpstudy 安装选择,iis+php组合,如何设置伪静态
如题. 找了半天,终于找到解决方案了. 需要在服务器上安装 Url rewrite 组件. 服务器是64位则安装:rewrite_2.0_rtw_x64.exe 然后添加 web.config配置文件 ...
- 在Mac OS上安装Vagrant和Docker的教程
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/128.html?1455808640 当听到很多人在说Docker是多么多 ...