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学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- C2第三次作业解题报告
看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/newbe/p/4069834.h ...
- glRotate函数
void glRotate( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) API说明:angle为旋转角度,单位为度:x,y,z是旋转轴的 ...
- Windows2003 架设VPN服务
一.确保Windows防火墙关闭. 在我的电脑上右键=>管理,在左边窗口找到“服务和应用程序”,展开,单击“服务”,在右边窗口中找到“Windows Firewall/Internet Conn ...
- ASP.NET Core 源码阅读笔记(2) ---Microsoft.Extensions.DependencyInjection生命周期管理
在上一篇文章中我们主要分析了ASP.NET Core默认依赖注入容器的存储和解析,这一篇文章主要补充一下上一篇文章忽略的一些细节:有关服务回收的问题,即服务的生命周期问题.有关源码可以去GitHub上 ...
- 【Leetcode】【Medium】Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- [UML]UML系列——状态机图statechart diagram
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class [UML]UML系列——类 ...
- TypeScript:基本类型和接口
返回TypeScript手册总目录 基本类型(Basic Types) 为了让程序可以使用,我们需要用到一些最简单的数据单元:数字,字符串,结构,布尔值,诸如此类.在TypeScript中,支持许多正 ...
- 解析ASP.NET WebForm和Mvc开发的区别
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- 新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式。
之前在交流群里和猿友们讨论string+和stringbuffer哪个速度快以及Java的方法参数传递的问题,引起了群里猿友的小讨论.最终LZ得出的结果是string+没有stringbuffer快, ...
- 原生JavaScript事件详解
JQuery这种Write Less Do More的框架,用多了难免会对原生js眼高手低. 小菜其实不想写这篇博客,貌似很初级的样子,但是看到网络上连原生js事件绑定和解除都说不明白,还是决定科普一 ...