甚么 刀切甚么 菜,那如何 选择讲话去做编程那讲菜?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仄台,最尾要的讲话。
Java Client-side :对与互联网去讲,JS是最尾要的编程讲话之一,前几天 ,阿里暴炒的中秋 月饼事件 ,主解便是 JS,目下现古,那五位当事人己被捧上了天,出错,他们只是会一面JS而己。
前端 JS 是 ECMA,版本之间的尺度相称 混治。前真个浏览 器支撑也十分鬼畜,没有 开的浏览 器跑同一 个 js 代码出截然没有 开的成果是很一样平常 的工做。前段的 js 广泛 各除夜网站。比去几年去驰誉的前端 MVC 框架 Angular, React, Vue 等皆是前端 js 框架。
Java Server-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兴起后,它如同 便出之前那么水了。操做 Ruby on Rails 架设一个 Web App 的效力 肯定 是顶尖的,自带的 Assets Pipeline 战 CSRF CORS 支撑战 cli 天死 MVC 要素的 feature 让人玩起去非常爽。
没有 中斲丧 环境 的 Web App 如同 真正在没有 多睹。没有 中 Ruby 自己也能够 或许 起到远似 Python 的熏染冲动但是 并出有几人用。
C#:末了 被设念出去是为了对抗 JAVA, 之前微硬有个没有 被同门认可的VS,便是visual java ,一气之下,微硬明出亲女子C#,微硬是聪慧 的,战c扯上干系错没有 了,C#是一部很好的讲话,他重新设念,克制 了别的 讲话正在死少 进程 中沾惹的短好的风俗 。当前,C#用于斥天基于微硬.NET仄台的操做法式,有些怅惘了。
上里借有几门可以或许 己经灭亡 的讲话COBOL(COmmon Business Oriented Language,通用贸易 法式设念讲话)笔者出有用 过,尾要用于贸易 数据措置 FORTRAN(FORmula Translation,公式翻译)尾要用于数值谋略 。
BASIC(Beginner All-purpose Symbolic Instructional Code,初教者通用标记指令码)易于进建战操做 Pascal(以Blaise Pascal命名) 别的一种数据库设念讲话。 Ada(以Ada lovelace 命名)最神稀的讲话,好国国防部公用,笔者从终睹过。
Visual Basic:许多老法式员的进门讲话,许多人用它编与了人死的第一份人为(微硬斥天的一种类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("Input file name: ");
scanf("%s",filename);
if(getCharNum(filename,totalNum)){
printf("Total: %d lines, %d words, %d chars\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("line words chars\n");
// 每次读与一止数据,保存 到buffer,每止最多只能有1000个字符
while(fgets(buffer,1003,fp)!=NULL){
bufferLen =strlen(buffer);
// 遍历缓冲区的内容
for(i=0;ibufferLen;i++){
c =buffer[i];
if(c==' '||c=='\t'){// 碰到 空格
!isLastBlank wordNum++;// 如果 上个字符没有 是空格,那么单词数减1
isLastBlank =1;
}elseif(c!='\n'c!='\r'){// 轻忽换止符
charNum++;// 如果 既没有 是换止符也没有 是空格,字符数减1
isLastBlank =0;
}
}
!isLastBlank wordNum++;// 如果 末了 一个字符没有 是空格,那么单词数减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,并输进以下的内容:
I am Chinese. I love my country. China has 960 square kilometers of territory. China has a population of 1.35 billion. The capital of China is Beijing. By gunge 2014-10-12
运转法式,输出成果为:
Input file name: d://demo.txt line words chars 1 7 26 2 7 39 3 7 33 4 6 27 5 0 0 6 2 7 7 0 0 8 1 10 Total: 8 lines, 30 words, 142 chars
上里的法式,每次从文件中读与一止,放到缓冲区buffer,然后遍历缓冲区,统计当前止的字符战单词数。
fgets()函数用于从文件中读与一止或指定个数的字符,其本型为:
char * fgets(char *buffer, int size, 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群一起 进建!
闭注微疑公众号收与更多更好玩的游戏代码
内容转载自公众号
编程讲话
体味更多