C的命运交响曲 孙志岗.

Slides:



Advertisements
Similar presentations
Which TV program is the video? 中国达人秀 China’s Got Talent 选秀节目 talent show talent n. 天资;天赋.
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
如何与客户有效沟通 外贸团队销售及管理实战培训 浙江艾力斯特健康科技有限公司
基础模块 模块一 程序设计基础 (一)开发环境部分.
C语言程序设计 主讲教师 :张群燕 电话:
授课教师:江星玲 1.
第1单元 操作系统概论 第一节 绪论 操作系统定义.
梳理 ● 拓展● 运用 ----高考英语二轮复习的品质追求
26个英语字母 let's go!.
“八皇后”问题 崔萌萌 吕金华.
程序设计基础 贺辉 图书馆三楼办公室(进馆左侧上楼)
第一章 C语言概述 计算机公共教学部.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
Chapter 29 English Learning Strategy Of High School Students
孙志岗 C语言四年课程经验总结 孙志岗
新世代計算機概論 第14章 程式語言.
目录.
實用日常英文用語 陳辟賢老師                          .
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Friendship Bouquet 友谊之花 Music: Nightengale Serenade
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程式撰寫流程.
片名:紅磨坊 (Moulin Rouge) 上映日期:90年6月2日 導演:巴茲魯曼【羅密歐與茱麗葉】【舞國英雄】  製片:巴茲魯曼 馬汀布朗
Introduction to the C Programming Language
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
Lesson 28 How Do I Learn English?
Instructor:Po-Yu Kuo 教師:郭柏佑
錢買不到的禮物 自動換頁 音樂:海莉·衛斯頓 演唱<Nada Sousou> 日本電影「淚光閃閃」主題曲英文版
感 恩 祭 麥子不死空自留 四旬期第五主日 感恩是基督徒生命的主旋律或基本調子 我們要學會:全犧牲,真愛人,常喜樂 主 題
Demon.C 封面 UNIQUE PPT June 6, 2013.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
(1) Change My Heart, Oh God 改造我的心
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
如何讓孩子成為明日之星 芃芃森林幼稚園 許玉芳 園長.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
Making Connection Sound with Symbol
Guide to a successful PowerPoint design – simple is best
C语言概述 第一章.
程式結構&語法.
第 二 章 数据类型、运算符与表达式.
True friendship is like sound health;
Introduction to the C Programming Language
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
Hot Links Period 4 Grammar.
C语言程序设计 李祥 QQ:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
C++程式設計入門 變數與運算子 作者:黃建庭.
靈裡生活 Spiritual Life.
冀教版 九年级  Look into Science!.
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
第二章 基本数据类型 ——数据的表示.
主 宾 表 定 状 补 不定式 √ 动名词 分 词.
#include <iostream.h>
 隐式欧拉法 /* implicit Euler method */
第十二章 位运算.
(C) Reap What You Sow 收你所種的
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
錢買不到的禮物 自動換頁 音樂:海莉·衛斯頓 演唱<Nada Sousou> 日本電影「淚光閃閃」主題曲英文版
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Introduction to the C Programming Language
函式庫補充資料 1.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C的命运交响曲 孙志岗

偶系凉粉 也系稀饭!

C的命运交响曲 第一乐章:宿命 第二乐章:乐趣 第三乐章:前途

C的命运交响曲 第一章:宿命 第二章:乐趣 第三章:前途

宿命 C必须服从的关键文档 解释C标准的文档 ISO/IEC 9899:1999 (C99) C的生命绝唱 C05即将推出,但只是bugfix 解释C标准的文档 Rationale for International Standard Programming Language C (V5.1)

判词——Spirit of C Trust the programmer. Don’t prevent the programmer from doing what needs to be done. Keep the language small and simple. Provide only one way to do an operation. Make it fast, even if it is not guaranteed to be portable. ——from Rationale for C99

判词——C的精神 信任程序员。 不要阻止程序员做他认为应该做的事。 保持语言的精巧和简单。 对一种操作只提供一种方法。 一定要快,哪怕这么做是不可移植的。 ——引自《Rationale for C99》

C的祖师爷——Dennis M. Ritchie http://www.cs.bell-labs.com/who/dmr/

Ritchie said C is quirky, flawed, and an enormous success.

Ritchie和Thompson在玩游戏

游戏创世纪 引子——一个游戏 结果——两部巨著 成就——两个超级黑客 Space Travel UNIX C http://cm.bell-labs.com/cm/cs/who/dmr/spacetravel.html 结果——两部巨著 UNIX C 成就——两个超级黑客 Ritchie & Thompson 1983,图灵奖

C的命运交响曲 第一章:宿命 第二章:乐趣 第三章:前途

趣味程序1——平方根 (Raymond Cheong ) #include <stdio.h> int l;int main(int o,char **O, int I){char c,*D=O[1];if(o>0){ for(l=0;D[l ];D[l ++]-=10){D [l++]-=120;D[l]-= 110;while (!main(0,O,l))D[l] += 20; putchar((D[l]+1032) /20 ) ;}putchar(10);}else{ c=o+ (D[I]+82)%10-(I>l/2)* (D[I-l+I]+72)/10-9;D[I]+=I<0?0 :!(o=main(c/10,O,I-1))*((c+999 )%10-(D[I]+92)%10);}return o;}

趣味程序2——旗语 (Glyn Anderson) char #include <stdio.h> *T="IeJKLMaYQCE]jbZRskc[SldU^V\\X\\|/_<[<:90!\"$434-./2>]s", K[3][1000],*F,x,A,*M[2],*J,r[4],*g,N,Y,*Q,W,*k,q,D;X(){r [r [r[3]=M[1-(x&1)][*r=W,1],2]=*Q+2,1]=x+1+Y,*g++=((((x& 7) -1)>>1)-1)?*r:r[x>>3],(++x<*r)&&X();}E(){A||X(x=0,g =J ),x=7&(*T>>A*3),J[(x[F]-W-x)^A*7]=Q[x&3]^A*(*M)[2 +( x&1)],g=J+((x[k]-W)^A*7)-A,g[1]=(*M)[*g=M[T+=A ,1 ][x&1],x&1],(A^=1)&&(E(),J+=W);}l(){E(--q&&l () );}B(){*J&&B((D=*J,Q[2]<D&&D<k[1]&&(*g++=1 ), !(D-W&&D-9&&D-10&&D-13)&&(!*r&&(*g++=0) ,* r=1)||64<D&&D<91&&(*r=0,*g++=D-63)||D >= 97&&D<123&&(*r=0,*g++=D-95)||!(D-k[ 3] )&&(*r=0,*g++=12)||D>k[3]&&D<=k[ 1] -1&&(*r=0,*g++=D-47),J++));}j( ){ putchar(A);}b(){(j(A=(*K)[D* W+ r[2]*Y+x]),++x<Y)&&b();}t () {(j((b(D=q[g],x=0),A=W) ), ++q<(*(r+1)<Y?*(r+1): Y) )&&t();}R(){(A=(t( q= 0),'\n'),j(),++r [2 ]<N)&&R();}O() {( j((r[2]=0,R( )) ),r[1]-=q) && O(g-=-q) ;} C(){( J= gets (K [1]))&&C((B(g=K[2]),*r=!(!*r&&(*g++=0)),(*r)[r]=g-K[2],g=K[2 ],r[ 1]&& O()) );;} main (){C ((l( (J=( A=0) [K], A[M] =(F= (k=( M[!A ]=(Q =T+( q=(Y =(W= 32)- (N=4 )))) +N)+ 2)+7 )+7) ),Y= N<<( *r=! -A))

趣味程序3——一元n次方程图 (Jonathan Hoyle) #include <stdio.h> #include <stdlib.h> #include <math.h> #define _ ;double #define void x,x #define case(break,default) break[O]:default[O]: #define switch(bool) ;for(;x<bool; #define do(if,else) inIine(else)>int##if? #define true (--void++) #define false (++void--) char*O=" <60>!?\\\n"_ doubIe[010]_ int0,int1 _ Iong=0 _ inIine(int eIse){int O1O=!O _ l=!O;for(;O1O<010;++O1O)l+=(O1O[doubIe]*pow(eIse,O1O));return l;}int main(int booI,char*eIse[]){int I=1,x=-*O;if(eIse){for(;I<010+1;I++)I[doubIe-1] =booI>I?atof(I[eIse]):!O switch(*O)x++)abs(inIine(x))>Iong&&(Iong=abs(inIine(x )));int1=Iong;main(-*O>>1,0);}else{if(booI<*O>>1){int0=int1;int1=int0-2*Iong/0 [O]switch(5[O]))putchar(x-*O?(int0>=inIine(x)&&do(1,x)do(0,true)do(0,false) case(2,1)do(1,true)do(0,false)6[O]case(-3,6)do(0,false)6[O]-3[O]:do(1,false) case(5,4)x?booI?0:6[O]:7[O])+*O:8[O]),x++;main(++booI,0);}}}

趣味程序4——迷宫 (Nick Johnson) #include <ncurses.h>/*****************************************************/ int m[256 ] [ 256 ],a ,b ;;; ;;; WINDOW*w; char*l="" "\176qxl" "q" "q" "k" "w\ xm" "x" "t" "j" "v" "u" "n" ,Q[ ]= "Z" "pt!ftd`" "qdc!`eu" "dq!$c!nnwf"/** *** */"t\040\t";c( int u , int v){ v?m [u] [v- 1] |=2,m[u][v-1] & 48?W][v-1 ] & 15]]):0:0;u?m[u -1][v]|=1 ,m[ u- 1][ v]& 48? W-1 ][v ]& 15] ]):0:0;v< 255 ?m[ u][v+1]|=8,m[u][v+1]& 48? W][ v+1]&15]] ):0 :0; u < 255 ?m[ u+1 ][v ]|= 4,m[u+1][ v]&48?W+1][v]&15]]):0:0;W][ v]& 15] ]);}cu(char*q){ return *q ?cu (q+ 1)& 1?q [0] ++: q[0 ]-- :1; }d( int u , int/**/v, int/**/x, int y){ int Y=y -v, X=x -u; int S,s ;Y< 0?Y =-Y ,s, s=- 1:( s=1);X<0?X=-X,S =-1 :(S= 1); Y<<= 1;X<<=1; if(X>Y){ int f=Y -(X >>1 );; while(u!= x){ f>= 0?v+=s,f-=X:0;u +=S ;f+= Y;m[u][v]|=32;mvwaddch(w,v ,u, m[u ][ v]& 64? 60: 46) ;if (m[ u][ v]&16){c(u,v);; ;;; ;;; return;}} }else{int f=X -(Y>>1);; while (v !=y ){f >=0 ?u +=S, f-= Y:0 ;v +=s ;f+=X;m[u][v]|= 32;mvwaddch(w,v ,u,m[u][v]&64?60:46);if(m[u ][ v]& 16) {c( u,v ); ; return;;;}}}}Z( int/**/a, int b){ }e( int/**/y,int/**/ x){ int i ; for (i= a;i <=a +S;i++)d(y,x,i,b),d(y,x,i,b+L);for(i=b;i<=b+L;i++)d(y,x,a,i),d(y,x,a+ S,i ); ;;; ;;; ;;; ;;; ; mvwaddch(w,x,y,64); ;;; ;;; ;;; prefresh( w,b,a,0,0 ,L- 1,S-1 );} main( int V , char *C[ ] ){FILE*f= fopen(V==1?"arachnid.c"/**/ :C[ 1],"r");int/**/x,y,c, v=0 ;;; initscr (); Z(Z (raw () ,Z( curs_set(0),Z(1 ,noecho()))),keypad( stdscr,TRUE));w =newpad ( 300, 300 ) ; for (x= 255 ; x >=0 ;x-- ) for (y= 255 ;y>=0;y-- )m[ x][ y]= 0;x=y=0;refresh( );while ( (c= fgetc (f) )+1) {if( 0||c==10|| x== 256){x=0;y++;if(y==256 )break;;} else{m[x][y]=(c == '~' ?64 : c ==32 ?0: 16) ;;x ++; }}for(x=0 ;x< 256;x++)m [x][0]=16 ,m[ x][ 255]=16;for(y=0 ;y< 256 ; y ++) m[0 ][y ] = 16, m[255][y] =16 ;a=b=c=0; x=y =1; do{v++;mvwaddch (w, y,x ,m[ x][ y]& 32? m[x ][y ] & 16? 0| acs_map[l[m[x][y]&15]]:46 : 32);c==0163&&!(m[x][y+1]&16)?y++: 0;c == 119 &&! (m[ x][ y- 1]& 16) ?y--:0;;c ==97 &&!(m[x-1][y]&16)?x--:0;c==100&&!(m[x+1 ][ y]& 16) ? x ++:0 ;if( c== 3- 1+1 ){endwin( );; return(0) ;}x -a<5?a>S- 5?a-=S-5:(a=0): 0;x -a> S-5?a<255 -S* 2?a +=S -5:(a=256-S):0; y-b<5?b>L-5?b-=L-5:(b =0) :0; y-b>L-5?b<255-L *2? b+= L-5 :(b =256 -L) :0;e(x,y);if(m[x][y]&64)break;}while((c=getch())!=-1);endwin();cu(Q); printf(Q,v);}

趣味程序5——文字加密 (Sunner Sun) int main(void){char p[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.\ 0123456789"; char *q="tDJA3SfoP"; int i=sizeof p,l;char *strchr ();int putchar ();while (*q){ putchar(p[i=(i^ (l= strchr(p,*q++)-p))&0x3F ]);i=l>i?l:i;}return 0;} http://sunner.cn

外星程序1——PI int a=10000,b,c=2800,d,e,f[2801],g; main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c -=14,printf("%.4d",e+d/a),e=d%a) for(b=c; d+=f[b]*a,f[b]=d%--g,d/=g--,--b; d*=b); }

外星程序2——Duff's device send(to, from, count) register short *to, *from; register count; { register n=(count+7)/8; switch(count%8){ case 0: do{ *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; }while(--n>0); }

C的命运交响曲 第一章:宿命 第二章:乐趣 第三章:前途

存在最好的语言吗? Match is best! 适合的才是最好的 做不同的事情,用不同的语言; 不知道自己将来会做什么事; 所以,不知道会用到什么语言。 我会一种语言; 找适合此语言的事情做; 不知道此语言能活多久。 学什么语言并不是最重要的

C C语言是基础吗? C语言不是学编程的基础 C语言是计算机的基础 最重要的软件,几乎都是C编的

C适合做什么事情? C什么事情都可以做 受限环境和底层环境 不适合做大型、复杂、面向应用的系统 对速度和内存消耗有苛刻要求 需要更直接地与硬件交互 系统级软件:操作系统等 嵌入式系统 不适合做大型、复杂、面向应用的系统

稀饭都是什么样的人? 骨灰级程序员 黑客 不是媒体所言“黑客” 喜欢刨根问底 向往自由 乐于共享

语言受欢迎的程度 http://www.tiobe.com/tpci.htm

Write in C When I find my code in tons of trouble, Friends and colleagues come to me, Speaking words of wisdom: "Write in C." As the deadline fast approaches, And bugs are all that I can see, Somewhere, someone whispers: Write in C, Write in C, Write in C, oh, Write in C. LOGO's dead and buried, Write in C. I used to write a lot of FORTRAN, For science it worked flawlessly. Try using it for graphics! If you've just spent nearly 30 hours Debugging some assembly, Soon you will be glad to Write in C. Write in C, Write in C, Write in C, yeah, Write in C. Only wimps use BASIC. Write in C, Write in C Write in C, oh, Write in C. Pascal won't quite cut it. Don't even mention COBOL.

C Develops Endless Future http://wiki.hit.edu.cn/index.php/C_Develops_Endless_Future 谢谢!