免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

有此一说:“C不过也是山寨版的Pascal,本质上就是把BEGIN,END变成了花括号” [复制链接]

论坛徽章:
0
91 [报告]
发表于 2011-10-17 18:09 |只看该作者
我靠,插不上嘴啊。

   每次一看到你们现在讨论的这些,都头大。
塑料袋 发表于 2011-10-17 15:15

语言如何如何的基本属于学术问题而不是工程问题。有人偏学术有人偏工程,各有专攻是很正常的。

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
92 [报告]
发表于 2011-10-17 19:59 |只看该作者
本帖最后由 ecloud 于 2011-10-17 20:23 编辑
比PEEK,POKE方便多了,比汇编好写多了,不然pascal为何不学PEEK,POKE?那么多牛人为何不用无所不能的 ...
ipindo 发表于 2011-10-17 15:44



     原则上讲,用任何语言可以编写任何程序,区别在于方便程度和可维护性。你以为无所不能的C也没有编写过web动画或者行列式计算程序,并不是说C做不到,而是人们有其他更好的选择。不同的语言有不同的特点,适合不同的应用环境,不存在谁高谁低,谁能谁不能。“方便”只是相对的,在某种环境下特定的。在面向硬件编程领域,至今仍有大量汇编在应用,因为汇编在这个环境下更方便、高效,UNIX内核迄今仍有一小部分是汇编编写的
至于你前面的问题,根本就不是问题
PEEK就是*,POKE就是&,除了占用字节多少不同,两者的实现毫无任何不同。但是在结构化的程序语言中,是要避免PEEK这种函数式的、硬性地址操作方法的;用一种“指针指示符”更适合结构化程序设计方法;相反,在过程化的语言中,直接的函数式操作更适用

举个简单的例子,C也好,Pascal也好,都可以用以下伪码来解释指针操作,注释后面是翻译成BASIC的方法

函数 A                 //  10 ADDA = 123456
{
  int x;                //  20 ADDAX = ADDA + 16
  int y;                //  30 ADDAY = ADDAX + 16
  x=2;                //  40 PEEK(ADDAX,2)
  y=3;                //  50 PEEK(ADDAY,3)
}

int M1 = A.x+A.y;        //  60 M1 = POKE(ADDAX) + POKE(ADDAY)         
printf(M1);;        //  70 PRINT M1

实际上这里,每一个类型声明就等同于分配一个地址数,也就是BASIC里面ADD打头的变量赋值,这里假定一个int是16bit的。这里ADDAX就是*x,ADDAY就是*y
这个例子里面有很多弱点,比如A的地址是瞎编的,M1的类型检测不充分等等,我只是简要的举个例子,表明结构化语言并不具有任何的先天与众不同,是完全可以等价翻译成过程化语言(汇编也是一种过程化语言,并且实际是其他过程化语言的本体)的,只是会带来很多不便

比如说布尔值,BASIC没有这种数据类型,我可以定义一个数组 BOOL[1],令BOOL[0]=0,BOOL[1]=1,然后就可以用它来表示true和false,总之有各种办法来达到目的
这就好比,你用C去解一个行列式,可以写一大堆算法来实现,等价于matlab两行语句,但是你不能说C解不了行列式,只能说C不适合干这个

另:本例可以从一定层面上回答好多d提出的问题,姑且作为一个引子,我就不扩展了,比如ADDA的地址里面有16bit的空间,可以用来存另外一个地址数,从那个地址开始的内容是A的构造函数;以此类推,自己去扩展吧,呵呵
100 ADDINT=45678
110 PEEK(ADDA,ADDINT)
120 IF A需要构造 THEN GOTO 1000
130 POKE(ADDINT)
......

10000 A构造函数开始
......
10400 PEEK(ADDINT,返回值)
10500 GOTO 130
其实这货就是**A,呵呵

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
93 [报告]
发表于 2011-10-17 20:41 |只看该作者
我仿佛看到了回字有四种写法

论坛徽章:
0
94 [报告]
发表于 2011-10-17 20:59 |只看该作者
本帖最后由 三月廿七 于 2011-10-17 21:04 编辑
我仿佛看到了回字有四种写法
bbjmmj 发表于 2011-10-17 20:41


用 c 语言 傻不傻B是相对的啊, 我就是比较牛B的那一种, 可以自己写 STL,  RTTI...
"面向对象"语言 简化的那一点点代码量可以忽略不计 ..

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
95 [报告]
发表于 2011-10-17 21:11 |只看该作者
用 c 语言 傻不傻B是相对的啊, 我就是比较牛B的那一种, 可以自己写 STL,  RTTI...
"面向对象"语言 简 ...
三月廿七 发表于 2011-10-17 20:59



    编程语言有个共同的精髓,你没有意识到:利益链。用JAVA你处于利益链的最下游,主要利益都被上游捞去了,JAVA是穷人的编程语言,喜欢JAVA,代表你观念贫穷,你坚持站在贫穷的立场上,很牛吗?

论坛徽章:
0
96 [报告]
发表于 2011-10-17 21:37 |只看该作者
本帖最后由 三月廿七 于 2011-10-17 21:39 编辑
C的面向对象能力仍然是迄今为止最为强大的。其后来的语言,C++、JAVA、PHP、JS等等最常用的几种, ...
bbjmmj 发表于 2011-10-17 12:37

我支持你的观点...
不只是面向对像是迄今为止最为强大的, c 语言的泛型编程也是迄今为止最为强大的...

论坛徽章:
0
97 [报告]
发表于 2011-10-17 22:27 |只看该作者
编程语言有个共同的精髓,你没有意识到:利益链。用JAVA你处于利益链的最下游,主要利益都被上游 ...
bbjmmj 发表于 2011-10-17 21:11



    嗯!弄出个软件,实际其中融合了别人大量的劳动,软件生产其实是流水线,上游工人搞操作系统、搞编译器、搞数据库的可以供应下游无数条流水线,每个流水线出来的产品中都有他们所创造的价值,而下游做应用的仅是自己这条线上的一部分,从这种角度来衡量上游理应拿更多。这是我的理解

论坛徽章:
0
98 [报告]
发表于 2011-10-18 08:31 |只看该作者
回复  狗气球

把精力过多消耗在语言中去了吗?
OwnWaterloo 发表于 2011-10-17 13:25



    我的意思是,pascal这种语言,因为框框都在那里,即使对语言理解不深,也不会写出特别诡异的代码。
    因此即使老师很烂,学生在没有任何其他参考资料的情况下也很容超过老师。
    C恐怕就不行了。

论坛徽章:
0
99 [报告]
发表于 2011-10-18 09:25 |只看该作者
原来是口水帖

论坛徽章:
9
技术图书徽章
日期:2014-10-14 15:48:13数据库技术版块每日发帖之星
日期:2015-06-04 22:20:00数据库技术版块每日发帖之星
日期:2015-06-10 22:20:00数据库技术版块每日发帖之星
日期:2015-06-11 22:20:00数据库技术版块每日发帖之星
日期:2015-06-13 22:20:00IT运维版块每日发帖之星
日期:2015-09-22 06:20:00IT运维版块每日发帖之星
日期:2015-12-08 06:20:00综合交流区版块每日发帖之星
日期:2016-02-02 06:20:00IT运维版块每日发帖之星
日期:2016-07-25 06:20:00
100 [报告]
发表于 2011-10-18 10:19 |只看该作者
嗯!弄出个软件,实际其中融合了别人大量的劳动,软件生产其实是流水线,上游工人搞操作系统、搞 ...
jeung 发表于 2011-10-17 22:27



    分工合作和利益分配是两个不同的概念,搞操作系统的工人同样也处在利益下游,处在利益上游的是资本家,而基于社会分工合作的原则,利益应该是大家按劳动均摊的,实际上不是,工人们不懂得利益链的概念,随便被人摆放于利益链最吃亏的地方而不自知,这就是无产阶级和资产阶级的根本区别。
    C的优势在于它能形成类似铁饭碗的效应,基本的东西不变,技术可以越来越精。面向对象的编程语言是很垃圾的,因为类和对象搞乱了数据结构,降低了易读性,各种千奇百怪的类,不止会消耗编程人员大量经历,还容易形成所谓的“产业”,让用户承担更多的成本,而面向对象的程序员是最悲惨的,因为类总在变,技术人员掌握的技术很快就会被新的类淘汰。
    面向对象的编程语言就象特制的螺丝,如果螺丝总变,机器就会陷入为适应螺丝疲于奔命而无力顾及效率的怪圈。人好比机器,螺丝好比编程语言。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP