Ibm Ccppcs V3
Upcoming SlideShare
Loading in...5
×
 

Ibm Ccppcs V3

on

  • 638 views

Experimental Upload

Experimental Upload

Statistics

Views

Total Views
638
Views on SlideShare
638
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ibm Ccppcs V3 Ibm Ccppcs V3 Presentation Transcript

  • C/C++/C# 小组  是的,这里就是 C/C++/ C# 小组 1
  • 为什么是我?  姓名:王坤山  性别:男  年龄: 21  05 级本科  计算机  会用一点 C / C++ / C# 2
  • 这里是交流的平台  展示各种 niubility  各种新奇技术。 3
  • 没错,你才是主角  你知道的  你喜欢的  都可以和大家分享  也许大家还不知道  或者。。  回去读手册更好 4
  • 语言选择?  C  Java  C++  C# 5
  • C  70 年代  脱颖而出  语言简单  整体一致  UNIX 系统  效率  可移植性 6
  • C++  80 年代  C with class  面向对象  更大的标准库  可移植性 7
  • Java  1995 年  嵌入式系统  软件工程  库  网络  可移植性 8
  • C#.NET  Microsoft  .NET Framework  Common Language Runtime (VB C# J# Jscript) 9
  • 区别 1 :编译 / 解释 10
  • 编译型语言 (C,C++) 0101010101 #include<iostream> using namespace std; 11001100101 int main() { 10010101 cout<<quot;helloquot;<<endl; 1101011011 return 0; 01 } 10101001101 在 CPU 源代码 机器码 上执行 11
  • 解释型语言 (Java, C#, .NET) 中间代码 解释执行 !@#$*^%!$# *$#(*&())({}{:L *&(@($^%) 解释器 Print “Hello” exit 0 源代码 12
  • 解释型语言 虚拟机 (JVM,CLR) !@#$*^%!$# *$#(*&())({}{:L *&(@($^%) 解释器 Print “Hello” exit 0 13
  • 编译 / 解释 编译: 解释:  高效 !!!! ● 跨越平台 !!!!  机器相关 ..... ● 实现高级功能 !!!! ● 效率略低 ... 例如: C/C++ 例如: Java/C# 14
  • 区别 2 :面向过程/面向对象  typedef struct {  class Dog {  char* name;  char* name;  color_t color;  color_t color;  } Dog ;    property color;  void setColor(Dog,col);  method speak(time);  void speak(Dog,time);  };    struct Dog my_dog  Dog my_dog;    setColor(my_dog,RED)  my_dog.color=RED;  speak(my_dog,2);  my_dog.speak(2); 15
  • 你为什么选择某种语言? 它哪里吸引你? 16
  • 语言级的功能吸引了你? C++ 强于 C Java,C# 强于 C++ 17
  • 垃圾回收 (Java,C#)  a = new Cls();  // delete a; 18
  • 泛形 (C++,Java,C#) 19
  • 异常处理 (C++,Java,C#) 20
  • 强大的标准库 (library) 21
  • 网络 22
  • 并发 23
  • 图形界面 24
  • C++, Java, C# 这么好 C 怎么办? 25
  • 第三方提供的库 (C,C++)  你并不孤单  如果你没有强大的标准库  有人会帮助你的   图形界面: QT,GTK+  多线程: POSIX 接口  垃圾回收: Boost 库  进程间通信: DBus  远端调用: XML-RPC  正则表达式: POSIX  图像处理: Cairo 26
  • 系统调用 (C,C++)  C 语言虽然没有强大的语言级高级功能  直接进行系统调用   int s=socket(AF_INET);   bind(s,5000);  listen(s,5);  while(int ss=accept(s)) {  if(fork()==0) {  read(ss,buf);  write(ss,resp);  close(ss);  }  } 27
  • 另外,透明才是王道  No Hidden Mechanisms!  // In C++:   string a,b,c;  a=”hello”;  b=”world”;   c=a+b; // 你知道 C++ 在背后 // 创造了几个对象吗? 28
  • 更高级的语言…… ………的本质是什么 29
  • 语法糖 (Syntax sugar)  (*p).attr=3;  p->attr=3; 30
  • 语法糖: 原本麻烦的事情 ...  // 嗯。。。典型的 C 语言程序。。。  rpcserver_t *s=malloc(sizeof(RPCServer);  init_server(s)  set_server_addr(s,”123.45.67.8”);  set_method(s,“getName”);  char *param={“foo”};  set_parameter(s,param);  make_method_call(s);  char *rv = get_return_value(s);  free(s); 31
  • 语法糖:让他变得简单  rv = RPCServer(“123.45.67.8”).getName(“foo”)  只有 1 行吗?  是的。虽然只有 1 行 运行环境在背后做了更多的工作。 效率实际上低于 C 语言 32
  • 更优美?更快? 33
  • 或者说 你“爱屋及乌” 你并不喜欢 这个语言 很无奈 , 因为 ... 34
  • 技术之间的捆绑  C 和 UNIX  C# 和 ASP.NET, ADO.NET  Java 和 JSP, Servlet, Glassfish  Python 和 Django, Plone  Ruby on Rail  ..... 没有关系,不怕 35
  • 还有什么语言? 36
  • 语言乱入— Python 动态类型语言  int a=1,b=2;  a,b=1,2 # 嗯,没有 int  char c=”foo”;  c=”foo” # 嗯,没有 char    Svr s = new Svr();  s=Svr() # 嗯,没有类型    int add(int x, int y) {  def add(x,y):  return x+y;  return x+y  }    # 嗯,传什么参数都可以  char* add(char* x,  add(3,5) == 8 char* y) {  add('foo','bar') == 'foobar'  ....  } 37
  • 语言乱入— Ruby 超级无敌面向对象  5.times { |x| puts “hello world”} # 没错, 5 是对象   a=0  [2,5,7,3,4].each {|x| a=if x>a then x else a}   quot;goodgoodstudyquot;.split(//).sort.uniq.reverse.join  => quot;yutsogdquot;   button.onClick { |event,arg|  puts 'Button clicked!'  MessageBox 'ok!'  } 38
  • 以上。 39