标题:C语言的几点疑惑
只看楼主
szyzln
Rank: 2
来 自:湖南张家界
等 级:论坛游民
帖 子:21
专家分:39
注 册:2013-8-31
结帖率:0
已结贴  问题点数:20 回复次数:5 
C语言的几点疑惑

写过1年的C#,摸着石头过河一样的改写过PHP开源系统。但我仍然想学好C语言并断断续续坚持了两年。我喜欢它的代码魅力和神一般的操控硬件资源。我希望将来有机会加入到Linux操作系统下的纯C开发。但是,纯C太难了!

这种枯燥的坚持,在一点点消灭我的毅力。有时候我很少放下,先拿起一本书学Java开发安卓手机软件,哪怕只是一个界面出来,就会大增我的成就感。学过C语言这么久,我不认为其它开发语言有谁比它难。那些具有IDE开发工具的语言,无非就是需要记忆的库函数更多更实用而已。

我一直在网上搜索和留意诸如“C和C++”、”C能做什么”之类的问题,其实,我也有些不解。冥冥中感觉C和其它高级语言就差了一个叫“界面”或者“控件”的东西。

一、C和C++到底有没有关系
我自己不确定,但个人认为绝对是没有关系的。请大家指教。那些所谓的在Windows操作系统下开发出来的有界面的程序,能在Linux下重新编译运行成功吗?

二、C什么都能做
个人感觉也不太对,现在网上所说的C语言开发出来的一切有窗口界面的程序都是C++,跟C一点关系都没有。

三、跨平台
我是这样理解的:Windows和Linux都是用C语言写的(其它操作系统先不说),自然所使用的一切原始材料肯定跑不脱C库,自然而然C编译器也能正确的将各系统其下的C代码顺利翻译成机器语言。

四、C语言能做出窗口和控件吗
隐约感觉特别难,感觉原因出在C是面向过程写代码的。其它语言,包括C++,它能写出控件,这个控件肯定是引用操作系统本身函数出来的。问题是操作系统是用C语言写的,请问操作系统有图形窗口是怎么写出来的?难怪Linux以前是没有X Window


[ 本帖最后由 szyzln 于 2014-2-22 21:12 编辑 ]
搜索更多相关主题的帖子: 手机软件 石头过河 C语言 成就感 操作系统 
2014-02-22 20:46
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:10 
C什么都能做。这话略显夸张,但也仅仅是略显。C的能力仅在汇编之下。

界面、控件,这不是C和其它高级语言的差别。C完全可以做这些。windows下的SDK、linux下的GTK+。

这里边的区别在于做窗口界面的难易程度。用IDE配合OO语言的框架,你甚至不用敲一行代码就可以做出一个简单的窗口程序。但用C,你需要敲上百行的代码来设置各种参数。

用过点汇编你的感受就更深了。所以不是说C做不了这些,而是这些环节用C做实在是有点浪费时间。

IDE是个好东西,实际工作可以大大地提高效率。但是学习的过程中它会替你做过多的事情,把本该亲自动手体验的知识点隐藏掉。

学习C语言嘛,都是从hello world这种命令行(或叫控制台)程序开始的,因为简单、更贴近实质。

但到现在恐怕只会在IDE里按F5执行的人不在少数。

你可以喜欢一种语言,但不要偏执。针对具体的任务选择最适合的工具用就好。

关于C和C++也不能说绝对没有关系。C++是C的超集。

重剑无锋,大巧不工
2014-02-22 21:33
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
得分:10 
我来谈谈跨平台,只要是这种电子计算机下的语言,都脱不了01,搞好接口便可

windows下的软件要移植到linux,不含特殊库(相对于标准库而言,如win API)的话可直接复制粘贴编译链接,含的话就要把相关部分替换掉,因为两种系统对待数据的方式等不太一样。

其实标准库也"位于系统之上",之所以能直接移是因为不同系统下的标准库分别采用了该系统的"规格"来编写

有什么不足请大家指正出来,我们一同探讨


莫问前尘有愧,但求今生无悔
2014-02-22 23:42
szyzln
Rank: 2
来 自:湖南张家界
等 级:论坛游民
帖 子:21
专家分:39
注 册:2013-8-31
得分:0 
回复 2楼 beyondyf
关于图形界面这块,是否可以这样理解:
Windows和Linux本身从C标准库写出了早期不带图形界面的版本。后来有了SDK和GTK+,刚才我百度了,其中GTK+就是实现了由纯C写出来的图形控件。目前很想知道在GTK+环境下用纯C写程序,是否也跟面向对象一样,有基于对象各种状态,还是仅仅从上向下一层一层过程来写。

支持Linux开源精神
2014-02-23 11:10
szyzln
Rank: 2
来 自:湖南张家界
等 级:论坛游民
帖 子:21
专家分:39
注 册:2013-8-31
得分:0 
回复 3楼 pycansi
我也是这么理解的:由C写出来的操作系统本身肯定支持C库。而C编译器基本上没有额外压力。只是由于各操作系统对数据格式的读取和存储(具体体现在文件系统格式上)不一样,顶多写几个对应的适应不同文件系统上运行的C编译器而已。

支持Linux开源精神
2014-02-23 11:14
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
得分:0 
回复 5楼 szyzln
如果用c来写系统的话,标准库中很多函数都不能用,如printf之类,因为这些函数在系统之上,依附于具体的系统


莫问前尘有愧,但求今生无悔
2014-02-23 13:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-427539-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.587723 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved