什么刀切什么菜,那怎样选择语言来做编程这道菜?C/C++
半夜,电话铃响,一个朋侪从美国打开电话,问编程用什么语言最好。这位朋侪在一家天下500强的中国公司任高级副总裁,我完全被他这个题目给问懵了。
“php是天下上最好的语言”,我夷由了下,答道。他非常高兴,“是吗,是吗,那你说说幸亏那边”。“我以为这话是错的,天下上最好的语言大概是c++吧”。“哦”他有些狐疑。我们就如许开端盖脸的聊开了,他说那他就招一个C++程序员,问我一个月开多少工资才得当,我说一个月80k吧。他说太高了,我说低于79k你招不来一个真正的C++程序员。末了,我问他要做会什么,他说他要做天下上最好的个人主页。我说这活天下上最好的语言和最好的程序员外加开最高的工资可做不了这活。
这下轮到他瞢了,他说他不怕费钱,就想做一个天下上最好的个人主页。我说你花8k找一个女朋侪是美工的php/javascripe程序员完完全全能满意你的要求。
看来,即便是天下500强企业的高级副总裁对编程语言这回事也美满是蒙圈的。
于是,本文整理了下,专为末来的高级副总裁们写了这篇短文章来讨论编程语言的题目,。果你点来此文,恭喜你,你对了,你就是末来的高级副总裁。收藏下,到那一天,你会用得着这些知识点的。
C:最靠近汇编的高级语言,最靠近呆板本质的语言,一样平常用来计划操纵体系,驱动程序等要求性能极致的产物。理论上说,把握C语言,是一个合格程序员的开始。痛惜,大部份程序员都不明白。C++:C是C++的一个子集,C++保存了C的运行性能,又易于构建大型的工程,C++是为面向对向而计划出来的,用C++,你可以计划出来更好的软件布局,大概说架构。C++得当做专业性极强,对性能要求极高,规模极大的软件项目,如欣赏器,Linux各类库。大型公司做的比力必要极致性能的项目(如游戏等),或是并发要求比力高的API服务等。
即便是在anroid中,假如你要做一款视频播放器,一款大型游戏,你为了秒杀竞争对手,c/c++会是你不得己的选择。
把握了C++,你可以计划出宇宙中的统统程序,而且计划得最好,固然,你大概要付出巨大的积极。如下,有了下面这些语言的生路。Java:JVM梦着提供了很好的跨平台支持,但不停没有乐成。以是在增长代码重用率上有不错的贡献,但是性能远不如C++以是在一些没那么必要性能的项目中较为常见。如业务逻辑不甚复杂的Web后端可以用Tomcat之类。
但java有着弘大的类库,简便的语法,假如你想快速的成为一个程序员,java是很好的选择,可以装逼也充足牛B.最紧张的是,这是android平台,最紧张的语言。
JavaClient-side:对与互联网来说,JS是最紧张的编程语言之一,前几天,阿里暴炒的中秋月饼变乱,主解就是JS,如今,这五位当事人己被捧上了天,没错,他们只是会一点JS而己。
前端JS是ECMA,版本之间的标准相称紊乱。前端的欣赏器支持也非常鬼畜,差别的欣赏器跑同一个js代码出截然差别的结果是很正常的事变。前段的js遍布各大网站。比年来着名的前端MVC框架Angular,React,Vue等都是前端js框架。
JavaServer-side:Joyent团队利用了Google开源的V8前端js引擎写出了一套能跑在服务器的和py差不多的表明性语言。因其底层封装fiber和EventEmitter对异步的支持做得相称好以是多见于当代Web服务器后端。闻名框架有Koa,Express,Sails,Strongloop,Meteor。
Python:比年来上升最快的一门语言,好像什么它都能做。当高端版盘算器用,或是调教一些不太复杂的GUI程序。
PHP:我不知道这个传说是出自那边,PHP是天下上最好的语言!但php也只能做一些服务器脚本,facebook就是靠它发迹的。php更像是一个简化了的c。以是,用php的程序员,应该暗自应幸,他们不是在用c++.Ruby:Python鼓起后,它好像就没从前那么火了。利用RubyonRails架设一个WebApp的服从肯定是顶尖的,自带的AssetsPipeline和CSRFCORS支持和cli天生MVC要素的feature让人玩起来非常爽。
不外生产环境的WebApp好像并不多见。不外Ruby本身也可以起到雷同Python的作用然而并没有多少人用。
C#:最初被计划出来是为了对抗JAVA,之前微软有个不被同门承认的VS,就是visualjava,一气之下,微软亮出亲儿子C#,微软是聪明的,和c扯上关系错不了,C#是一部很好的语言,他重新计划,克制了别的语言在发展过程中沾惹的不好的风俗。当前,C#用于开辟基于微软.NET平台的应用程序,有些痛惜了。
下面尚有几门大概己经灭亡的语言COBOL(COmmonBusinessOrientedLanguage,通用贸易程序计划语言)笔者没有效过,重要用于贸易数据处理惩罚FORTRAN(FORmulaTranslation,公式翻译)重要用于数值盘算。
BASIC(BeginnerAll-purposeSymbolicInstructionalCode,初学者通用符号指令码)易于学习和利用Pascal(以BlaisePascal定名)另一种数据库计划语言。Ada(以Adalovelace定名)最神密的语言,美国国防部专用,笔者从末见过。
VisualBasic:很多老程序员的入门语言,很多人用它编取了人生的第一份工资(微软开辟的一种类Basic的可视化编程语言)图形用户界面的开辟以及应用程序快速开辟,学习它的负作用是,再也学不了别的的语言了。Delphi(Borland公司开辟的一种类Pascal的可视化编程语言)图形用户界面的开辟以及应用程序的快速开辟,曾经非常火的数据库类软件开辟语言。
C语言统计文件中的字符数、单词数以及总行数
统计文件的字符数、单词数以及总行数,包罗:
每行的字符数和单词数
文件的总字符数、总单词数以及总行数
留意:
空缺字符(空格和tab缩进)不计入字符总数;
单词以空格为分隔;
不思量一个单词在两行的环境;
限定每行的字符数不能高出1000。
请先看代码:
纯文本复制
#includestdio.h
#includestring.h
int*getCharNum(char*filename,int*totalNum);
intmain(){
charfilename[30];
//totalNum[0]:总行数totalNum[1]:总字符数totalNum[2]:总单词数
inttotalNum[3]={0,0,0};
printf("Inputfilename:");
scanf("%s",filename);
if(getCharNum(filename,totalNum)){
printf("Total:%dlines,%dwords,%dchars\n",totalNum[0],totalNum[2],totalNum[1]);
}else{
printf("Error!\n");
}
return0;
}
/**
*统计文件的字符数、单词数、行数
*
*@paramfilename文件名
*@paramtotalNum文件统计数据
*
*@return乐成返回统计数据,否则返回NULL
**/
int*getCharNum(char*filename,int*totalNum){
FILE*fp;//指向文件的指针
charbuffer[1003];//缓冲区,存储读取到的每行的内容
intbufferLen;//缓冲区中实际存储的内容的长度
inti;//当前读到缓冲区的第i个字符
charc;//读取到的字符
intisLastBlank=0;//上个字符是否是空格
intcharNum=0;//当前行的字符数
intwordNum=0;//当前行的单词数
if((fp=fopen(filename,"rb"))==NULL){
perror(filename);
returnNULL;
}
printf("linewordschars\n");
//每次读取一行数据,生存到buffer,每行最多只能有1000个字符
while(fgets(buffer,1003,fp)!=NULL){
bufferLen=strlen(buffer);
//遍历缓冲区的内容
for(i=0;ibufferLen;i++){
c=buffer[i];
if(c==''||c=='\t'){//碰到空格
!isLastBlankwordNum++;//假如上个字符不是空格,那么单词数加1
isLastBlank=1;
}elseif(c!='\n'c!='\r'){//忽略换行符
charNum++;//假如既不是换行符也不是空格,字符数加1
isLastBlank=0;
}
}
!isLastBlankwordNum++;//假如末了一个字符不是空格,那么单词数加1
isLastBlank=1;//每次换行重置为1
//一行竣事,盘算总字符数、总单词数、总行数
totalNum[0]++;//总行数
totalNum[1]+=charNum;//总字符数
totalNum[2]+=wordNum;//总单词数
printf("%-7d%-7d%d\n",totalNum[0],wordNum,charNum);
//置零,重新统计下一行
charNum=0;
wordNum=0;
}
returntotalNum;
}
在D盘下创建文件demo.txt,并输入如下的内容:
IamChinese.Ilovemycountry.Chinahas960squarekilometersofterritory.Chinahasapopulationof1.35billion.ThecapitalofChinaisBeijing.Bygunge2014-10-12
运行程序,输出结果为:
Inputfilename:d://demo.txtlinewordschars17262739373346275006277008110Total:8lines,30words,142chars
上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。
fgets()函数用于从文件中读取一行或指定个数的字符,其原型为:
char*fgets(char*buffer,intsize,FILE*stream);
参数阐明:
buffer为缓冲区,用来生存读取到的数据。
size为要读取的字符的个数。假如该行字符数大于size-1,则读到size-1个字符时竣事,并在末了增补'\0';假如该行字符数小于便是size-1,则读取全部字符,并在末了增补'\0'。即,每次最多读取size-1个字符。读取的字符包罗换行符。
stream为文件指针。
有的读者问,为什么不利用getc(),每次从文件中读取一个字符,也无需开辟缓冲区。
如许没有题目,但是在处理惩罚换行时要留意跨平台题目,由于差别的平台对文本文件换行的处理惩罚不一样,Linux以'\n'为换行符,Windows以'\n\r'为换行符,Mac又以'\r\n'为换行符。以是,利用getc()函数处理惩罚换行时比力贫苦。
这里去繁就简,通过fgets()读取整行数据,然后再处理惩罚每个字符,直接忽略'\n'和'\r'。
留意:由于每行的末了会有最多2个字节长度的换行符,fgets()还会添加NUL,以是缓冲区的长度至少为1003,才华容纳每行1000个字符,否则strlen()大概返回垃圾值。
请看代码第43行,打开文件堕落时,返回NULL,而不是生硬的exit()。如许可以关照主调函数发生了错误,让主调函数做出得当的处理惩罚,大概关照用户,进步软件的用户体验。
盼望对各人能有所资助,欢迎各人转发
QQ学习群:459792635
进入阅读原文进入学习
c/c++直播课-每晚21:00-22:00
更多教程,请点击阅读原文参加QQ群一起学习!
关注微信公众号领取更多更好玩的游戏代码
内容转载自公众号
编程语言
相识更多
我要评论