博文
C++从零开始(一)——何谓编程 (2005-11-13 13:40:00)
摘要:
--------------------------------------------------------------------------------
引言
曾经有些人问我问题,问得都是一些很基础的问题,但这些人却已经能使用VC编一个对话框界面来进行必要的操作或者是文档/视界面来实时接收端口数据并动态显示曲线(还使用了多线程技术),却连那些基础的问题都不清楚,并且最严重的后果就是导致编写出拙劣的代码(虽然是多线程,但真不敢恭维),不清楚类的含义,混杂使用各种可用的技术来达到目的(连用异常代替选择语句都弄出来了),代码逻辑混乱,感觉就和金山快译的翻译效果一样。
我认为任何事情,基础都是最重要的,并且在做完我自定的最后一个项目后我就不再做编程的工作,守着这些经验也没什么意义,在此就用本系列说说我对编程的理解,帮助对电脑编程感兴趣的人快速入门(不过也许并不会想象地那么快)。由于我从没正经看完过一本C++的书(都是零碎偶尔翻翻的),并且本系列并不是教条式地将那些该死的名词及其解释罗列一遍,而是希望读者能够理解编程,而不是学会一门语言(即不止会英翻汉,还会汉翻英)。整个系列全用我自己的理解来写的,并无参考其他教材(在一些基础概念上还是参考了MSDN),所以本系列中的内容可能有和经典教材不一致的地方,但它们的本质应该还是一样的,只是角度不同而已。本系列不会仔细讲解C++的每个关键字(有些并不重要),毕竟目的不是C++语言参考,而是编程入门。如果本系列文章中有未提及的内容,还请参考MSDN中的C++语言参考(看完本系列文章后应该有能力做这件事了),而本系列给出的内容均是以VC编译器为基础,基于32位Windows操作系统的。
下面罗列一下各文章的标题和主要内容,红色修饰的文章标题表示我认为的重点。
C++从零开始(一)——何谓编程(说明编程的真正含义及两个重要却容易被忽略的基础概念)
C++从零开始(二)——何谓表达式(说明各操作符的用处,但不是全部,剩余的会在其它文章提到)
C++从零开始(三)——何谓变量(说明电脑的工作方式,阐述内存、地址等极其重要的概念)
C++从零开始(四)——赋值操作符(《C++从零开始(二)》的延续,并为指针的解释打一点基础)
C++从零开始(五)——何......
C++从零开始(一)…………(十二(2005-11-13 13:39:00)
摘要: 只有真正的程序员才使用Visual C++。反过来,则并不见得如此。最近似乎有许多专业的程序员放弃了使用这一语言而改用了其它产品提供的RAD(快速应用开发)环境。许多人认为Visual C++太古老、太烦琐、学起来太困难了。
说句实在话,Visual C++的学习周期确实比其它语言要长。可以很轻易地引入需要花上数小时才能排除的微妙错误这一事实一点也无助于提高程序员的开发效率。
然而,让我们先把这些负面缺陷暂时放到一边,来看一看Visual C++具备的长处。使用Visual C++主要的原因之一就在于它的灵活性。你可以彻底地控制整个开发环境。其它语言则更多地趋向于庇护程序员,当要做一些基本的东西时,它们会做得很好。不幸的是,当你需要使用像C++这样的语言删除编程中的繁文缛节,并把任务完成时,这种保护作用就变成了开发工作的障碍。
长期以来,Visual C++一直拥有能够创建短小高效程序的美誉。使用这种语言编写的程序几乎可以与用汇编语言编写的程序达到相同的运行速度,并且避免了汇编语言存在的各种问题。C++实际上是介于汇编语言中寄存器编程的神秘莫测和像Pascal这种保护型编程环境方便性之中间难度的语言。
C++是编写诸如操作系统、设备驱动程序以及动态链接库(DLL)的强大语言,这一点不会不引起你的注意,这三种领域代码的开发依然是Visual C++的主战场。Visual C++生成的短小、快速的代码在操作系统类对时间要求很高的系统中获得了极高的赞誉。
到现在为止,我告诉你的一切你可能已经在其它书籍中看过无数遍了。下面就让我讲一些这个版本的Visual C++中独有的内容。Microsoft添加到这个版本的Visual C++中的最新特性之一是更佳的原型能力,这一点通过增强的向导来实现。现在,这个特性还不能把Visual C++提升到像Visual Basic向导相同的水平上,但它确实减少了开发应用程序的入门时间棗这是个深受欢迎的变化。另外,增强的向导使得这个版本的Visual C++比以前版本更为友好(本章的后续部分我将全部用于介绍Visual C++的其它新特性)。
Visual C++也是编写ActiveX控件以及像ISAPI(Internet服务器应用程序接口)扩展......
[转]C与C++的区别 (2005-11-13 13:37:00)
摘要:
[转]C与C++的区别
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。
再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。
所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。
几点学习建议:
1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。
3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。
4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。 <......
[强烈推荐]各种语言+SQL Server视频教程(2005-11-13 13:31:00)
摘要: 请大家右键点击地址下载
找了很久的 大家马上下吧 我也不知道 这个 可以免费下载多久!~ 以下是从网上获得的数个多媒体视频教程,经测试,可以下载(请尽快下载),希望正在学习以下内容的朋友支持一下。如果不能观看,请下载:http://bbs.cfanclub.net/viewfile.asp?ID=24637
VC:
http://www.edu.fp.net.cn/resource/program/y_vc/T101.avi
http://www.edu.fp.net.cn/resource/program/y_vc/T201.avi~
中间自己加
http://www.edu.fp.net.cn/resource/program/y_vc/T208.avi
http://www.edu.fp.net.cn/resource/program/y_vc/T301.avi~
中间自己加
http://www.edu.fp.net.cn/resource/program/y_vc/T307.avi
http://www.edu.fp.net.cn/resource/program/y_vc/T401.avi~
中间自己加
http://www.edu.fp.net.cn/resource/program/y_vc/T404.avi
VB:
http://www.edu.fp.net.cn/resource/program/y_vb/T101.avi
http://www.edu.fp.net.cn/resource/program/y_vb/T201.avi
http://www.edu.fp.net.cn/resource/program/y_vb/T202.avi
http://www.edu.fp.net.cn/resource/program/y_vb/T203.avi
http://www.edu.fp.net.cn/resource/program/y_vb/T204.avi
http://www.edu.fp.net.cn/resource/program/y_vb/T205.avi
http:......
Intel芯片卷入造假风波 声明CPU造假说不实(2005-11-13 13:14:00)
摘要:
昨天上午,网上流传出一条爆炸性新闻,称国内著名IT网站———IT168在评测中发现某笔记本电脑上采用的英特尔移动CPU(中央处理器)竟存在造假行为。对此,英特尔中国昨天紧急发表声明称“这一说法完全不实”。
芯片被疑造假
昨天下午,记者辗转与当时为笔记本电脑进行评测,并发现英特尔移动CPU可能存在造假情况的IT168网站编辑张志恒取得联系。张志恒告诉记者,在大约1个半月前,网站进行了一次常规的万元以下价位笔记本横向评测活动,在评测即将结束时却发现了移动CPU造假情况。而在随后赴深圳暗访后发现,在低端机市场上部分CPU混乱情况相当广泛地存在于低价机型中。
张志恒透露,最先发现的是总部位于华南地区的某国内中小品牌的笔记本电脑CPU,在经过放大镜观察后,发现CPU表面有经过打磨的痕迹,他因此判断这块CPU是经过打磨后重新流入市场的“工程样品”。张志恒解释说,所谓“工程样品”,就是指英特尔在推出某种新款CPU之前,都会先免费拿一些“工程样品”给某些电脑生产厂商进行测试,而被测试的这批CPU就是“工程样品”。
张志恒接着说,在发现CPU有打磨现象后,他们随后又对该品牌另一个型号的笔记本电脑CPU进行测试,尽管这次没有出现打磨的迹象,却发现原本应该焊在电脑上的CPU被人为地改成了插槽式的架构(注:uFCBGA改uFCPGA封装),“这样直接导致的后果就是,将会使笔记本电脑的散热功能大大降低。”张志恒说。
张志恒还向记者强调,在发现这样的问题后,他曾多次与英特尔中国区一位技术方面的高层人士取得联系,而该人士对于打磨CPU的问题不予评论,但是对于“焊接改插入式封装”问题,则认定该CPU为某一级厂商批量采购的产品,并且遵循该厂商的要求,英特尔为其提供了改装服务。
英特尔立即否认
昨天下午,英特尔中国公司向记者发来了对此事的官方声明,声明表示,“英特尔一贯把保证产品质量和安全放在首位,并高度重视保护消费者权益。为此,我......
担心失去竞争优势 IBM鼓励员工改行做教师(2005-11-13 13:10:00)
摘要:【导读】IBM公司担心美国正在失去自己的竞争优势,它将对那些想离开公司担任数学和理科老师的员工予以财政资助
天极网9月17日消息(老沈 编译):据外电报道,IBM公司担心美国正在失去自己的竞争优势,它将对那些想离开公司担任数学和理科老师的员工予以财政资助。
这项新计划是IBM在周五与城市和州的教育官员们一起宣布的,它反映了美国技术产业的担心:美国理科学生的水平正在下跌,落在印度Bangalore和中国北京学生的后面。
在该计划的试验阶段,100名IBM公司员工将有资格得到资助。蓝色巨人希望自己公司有更多的优秀技术员工紧随其后,还希望其他公司员工也这样做。
鼓励员工改行教师计划的目的是帮助填补美国教师职业的短缺,由于今天教育者的退休,教师短缺问题将继续发展。
美国各类产业有许多公司特别担心数学和理科学生的教育质量,这些公司需要技术员工,但它们看到了这些科目的低水平考试成绩,也看到学生对理科职业的兴趣在消退。
IBM基金负责人Litow说:我们现在需要25万名数学和理科教师,但现状很难告诉我们获得人才的途径在哪里。这个问题就像是一个正在计时的定时炸弹,它不仅影响技术公司,而且影响到企业和美国经济。
虽然有许多公司鼓励员工辅导孩子,或参与与教育有关的其他活动,但IBM公司认为,自己是第一家指导员工改行从事教师职业的公司。......
面朝大海,春暖花开(2005-11-13 13:03:00)
摘要:面朝大海,春暖花开
作者:海子
从明天起,做一个幸福的人
喂马,劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获的幸福
我也愿面朝大海,春暖花开
......
SQL Server里一些未公开的扩展存储过程(2005-11-13 12:51:00)
摘要:
扩展存储过程(xp)是直接运行在SQL Server地址空间里的动态链接库,是通过使用SQL Server开放数据服务API(SQL Server Open Data Services API)开发的。我们可以像执行普通存储过程一样,在“查询分析器”里运行扩展存储过程。扩展存储过程被用于SQL Server的扩展功能,我们可以直接利用SQL Server附带的众多扩展存储过程,也可以用C或C++等编程语言编写我们自己的扩展存储过程。
在本文中,我将告诉大家一些未公开的有用的扩展存储过程。这些存储过程可以运行于SQL Server 7.0,当然SQL Server 2000也可以。
1、sp_MSgetversion
这个扩展存储过程可以用来获得Microsoft SQL Server的当前版本。要获得SQL Server的版本,执行:
EXEC master..sp_MSgetversion
注意,还有一种方法获得SQL Server的当前版本(这种方法能得到更多信息),那就是用下面的SELECT语句:
SELECT @@version
2、xp_dirtree
这个扩展存储过程可以用于为在扩展存储(xp)中命名的文件夹列出所有文件夹。要列出C:\MSSQL7中的所有文件夹,执行:
EXEC master..xp_dirtree 'C:\MSSQL7'
3、xp_enum_oledb_providers
这个扩展存储过程用于列出所有可用的OLE DB提供者(OLE DB providers)。它返回提供者的名称、解析名称(Parse Name)和提供者的描述。要获得你的SQL Server的所有OLE DB提供者,执行:
EXEC master..xp_enum_oledb_providers
4、xp_enumcodepages
这个扩展存储过程可以用来列出所有你的SQL Server的代码页(code pages)、字符集和它们的描述。要查看这些信息,执行:
EXEC master..xp_enumcodepages
5、xp_enumdsn
这个扩展存储过程系统所有的DSN和它们的描述。要......