C 之父:精通C 很难,但你一天之内就能学习使用C
精通C 听起来好像就是一个笑话。为什么C 比别的语言难学那么多?其实这基本上是因为C 之父Bjarne Stroustrup 说过的一句话“我特别的讨厌语言的设计者把自己的喜好强加给用户”(看向go)。结果C 为了不限制你的想法,于是也就变成了现在的样子-- ,那么如何学好C ,甚至是出色掌握C ?
1.谈谈C 的书籍。
没有,也不可能有一本书对于所有人来说都是最好的。不过对于那些真正的程序员来说,如果他喜欢从“经典风格”的书中间学习一些新的概念和技术,我推荐我的The C Programming Language, 1998年的第三版和特别版。那本书讲的是纯而又纯的C ,完全独立于平台和库(当然得讲到标准库)。该书面向那些有一定经验的程序员,帮助他们掌握C ,但不适合毫无经验的初学者入门,也不适合那些临时程序员品尝C 快餐。所以这本书的重点在于概念和技术,而且在完整性和精确性上下了不少功夫。
2. 学习C 要花多长时间?
这要看你说的“学习”是什么意思了。如果你是一个Pascal程序员,你应该能很快地使你的C 水平达到与Pascal相近的程度;而如果你是一个C程序员,一天之内你就能学会使用C 进行更出色的C风格编程。另一方面,如果你想完全掌握C 的主要机制,例如数据抽象,面向对象编程,通用编程,面向对象设计等等,而此前又对这些东西不很熟悉的话,花上个一两年是不足为奇的。那么是不是说这就是学习C 所需要的时间呢?也许再翻一番,我想打算成为更出色的设计师和程序员最起码也要这么长的时间。如果学习一种新的语言不能使我们的工作和思想方式发生深刻的变革,那又何苦来哉?跟成为一个钢琴家或者熟练掌握一门外语相比,学习一种新的、不同的语言和编程风格还算是简单的。
3. 了解C语言是学习C 的前提条件吗?
否!C 中与C相近的子集其实比C语言本身要好学,类型方面的错误会少一些,也不像C那样绕圈子,还有更好的支持库。所以应该从这个子集开始学习C 。
4. 要想成为真正的OO程序员,我是不是得先学习Smalltalk?
否。如果你想学Smalltaok,尽管去学。这种语言很有趣,而且学习新东西总是一个好主意。但是Smalltalk不是C ,而且把Smalltalk的编程风格用在C 里不会有什么好结果。如果你想成为一个出色的C 程序员,而且也没有几个月的时间百无聊赖,请你集中力量学好C 以及其背后的思想。
5. 我如何开始学习C ?
这取决于你的基础和学习动机。如果你是个初学者,我想你最好找个有经验的程序员来帮助你,要不然你在学习和实践中不可避免的犯下的种种错误会大大地打击你的积极性。另外,即使你的编译器配备了充足的文档资料,一本C 书籍也永远是必不可少的,毕竟文档资料不是学习编程思想的好教材。
6. 怎样改进我的C 程序?
不好说。这取决于你是怎么使用该语言的。大多数人低估了抽象类和模板的价值,反过来却肆无忌惮地使用造型机制(cast)和宏。这方面可以看看我的文章和书。抽象类和和模板的作用当然是提供一种方便的手段建构单根的类层次或者重用函数,但更重要的是,它们作为接口提供了简洁的、逻辑性的服务表示机制。
7. 语言的选择是不是很重要?
是,但也别指望奇迹。很多人似乎相信某一种语言能够解决他们在系统开发中遇到的几乎所有问题,他们不断地去寻找完美的编程语言,然后一次次的失败,一次次的沮丧。另外一些人则将编程语言贬为无关紧要的细节,把大把大把的银子放在开发流程和设计方法上,他们永远都在用着COBOL,
C和一些专有语言。一种优秀的语言,例如C ,能帮助设计者和程序员做很多事情,而其能力和缺陷又能够被清楚地了解和对待。
http://www.taodudu.cc/news/show-955474.html
相关文章:
- C/C 宏替换详解
- C 实现高性能内存池
- C语言 -- 字符串中根据特定字符(串)分割
- C 线程的创建
- C - 指针总结
- 分享10个值得关注的C语言开源项目
- 入门C语言10问10答
- ID生成器 雪花算法
- C/C 输入输出缓冲区
- 深入理解右值引用,move语义和完美转发
- 如何优雅地检测类型/表达式有效性?
- C 条件变量使用详解
- 多线程队列的算法优化
- 多线程程序中操作的原子性
- 为什么程序员需要关心顺序一致性,而不是 Cache 一致性?
- C 迭代器iterator的实现原理
- 根据字符串自动构造对应类
- C 虚函数表及多态内部原理详解
- 10 张程序员喜爱的壁纸,需要自取~
- 通过反汇编来理解restrict关键字
- 我改了500个Bug,但是!!
- 快速学习C语言的途径,让你少走弯路!
- C语言学习趣事_你不知道的C语言应用
- java开发C编译器:结构体的解析和执行
- C语言和图形界面编程打造——浪漫的表白程序
- 【C语言入门学习笔记】如何把C语言程序变成可执行文件!
- c语言如何把c程序编译成可执行的exe文件
- 输出 Hello World 混乱C语言的源代码
- C语言实现魔方阵代码及解析
- c语言心形告白代码实现
C 之父:精通C 很难,但你一天之内就能学习使用C相关推荐
- Ruby之父:写Ruby时工作特别闲,总加班的人很难做出创造
上个月 Ruby 之父松本行弘来到中国参加 Ruby Conf 大会,期间他接受了二叉树视频的采访,我们很荣幸获得了二叉树视频的授权,转载了这篇文章,希望各位读者看到一个不一样的松本行弘. 视频丨二叉 ...
- 对话 MySQL 之父 Monty:超越 MySQL 很难,但我做到了!
作者 | 王启隆 责编 | 唐小引 出品 | <新程序员>编辑部 数据库是所有现代信息系统的支柱,打孔卡系统曾管理了 20 世纪的社会运作,而在计算机诞生之后,电子数据库系统存 ...
- 实现一个全链路监控平台很难吗?Pinpoint、skywalking、zipkin,哪个实现比较好?...
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往 ...
- 实现一个全链路监控平台很难吗?一点都不难。。。
0 问题背景 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现 ...
- 为什么一线互联网公司的校招高薪都是算法类,工程岗校招很难拥有高薪吗?...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达本文整理自知乎问答,仅用于学术分享,著作权归作者所有.如有侵权,请联系后台作删文处理. 观点一 作者|知 ...
- 【转载】哈希表的原理,真的很难弄懂么?
[转载]哈希表的原理,真的很难弄懂么? 刘小爱v 发布时间:05-0909:06科技达人 转载路径: https://baijiahao.baidu.com/s?id=1666172942887109 ...
- c# socket接收字符串_socket通信很难?这一文让你轻松搞定!
目录 概述 TCP/IP协议.UDP协议 Socket是什么 socket通信流程 socket编程php代码实战 php7进阶到架构师相关阅读 概述 这是关于php进阶到架构之php7核心技术与最佳 ...
- 英语每日阅读---1、科学美国人60秒:如果觉得唱歌很难 那就吹口哨吧
英语每日阅读---1.科学美国人60秒:如果觉得唱歌很难 那就吹口哨吧 一.总结 一句话总结:科学美国人60秒:如果觉得唱歌很难 那就吹口哨吧_科学美国人科学系列 - 可可英语 http://www. ...
- 本科数学基础差的感觉 SLAM 很难,如何去提高?
作者丨行痴@知乎 来源丨https://www.zhihu.com/question/392255715/answer/1200711803 编辑丨3D视觉工坊 工程slam对数学要求不算特别高.大部 ...
最新文章
- java aqs源码_Java-AQS源码详解(细节很多!)
- 加解压开源组件-SharpZipLib
- ASP.NET中EVAL用法大全
- log4j添加日志一定记住在工程的web.xml文件下加一些内容
- python discuz_pythonDiscuz发帖器的实现
- oracle坏块修复
- 打开终端输入没反应_忘掉Iterm2,试试这款跨平台终端工具
- Linux系统管理_ACL访问控制-Redhat Enterprise 5
- R语言 | 构建信用评分卡模型
- java 快逸报表_快逸报表V4.0功能说明
- 电子行业使用erp生产管理系统有哪些作用?常见模块有哪些?
- ACM退役帖(青岛赛后再更新)
- 2023 WordPress 节日灯笼美化插件
- 34 Places to Get Design Inspiration - Online and Offin
- 这就是所谓的历史剧?
- 物联网-业务数据智能管理应用设计
- n元(维)正态分布(The multivariate normal distribution)
- 手动搭建服务器—Python
- html转换成word qt,PHP 将HTML转成PDF文件,HTML 转word,Word 转Html
- 坐在车里把钱赚?百度路淘,轻松月入4万