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.mzph.cn/news/339214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dbunit使用_摆脱困境:在DbUnit数据集中使用空值

dbunit使用如果我们正在为使用Spring Framework的应用程序编写集成测试,则可以通过使用Spring Test DbUnit将DbUnit与Spring测试框架集成。 但是, 这种集成并非没有问题 。 通常,我们必须在运行测试之前向数据库中插入空值,或者…

android汉字田字格,画一个简单的田字格

image.png上代码package com.nick.customview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.support.annotation.Nullable;import android.sup…

xp定时关机软件_好用又免费的电脑定时工具,不用得后悔

现在利用电脑办公的人有多少,举个手示意下!!!给电脑设置定时关机,可以方便我们不在电脑前完成关机操作。那么,如何设置定时关机呢?如果要取消,定时关机又如何取消?有的人…

apache camel_Apache Camel请向我解释这些端点选项的含义

apache camel在即将发布的Apache Camel 2.15中,我们使Camel更智能。 现在,它可以充当老师,并向您说明其配置方式以及这些选项的含义。 Camel可以做的第一课是告诉您如何配置所有端点以及这些选项的含义。 接下来我们要学习的课程是让Camel解…

android照片备份软件下载,照片备份云相册app下载-照片备份云相册下载V1.9安卓版-西西软件下载...

这款软件主要为安卓手机用户提供照片图片等备份的服务,通过照片备份云相册app可以轻松的为更多手机空间不够的用户清理出手机空间,照片图片等的是最不容易发现占用空间的,现在有了照片备份云相册app就能轻松让手机内存足够使用哦。照片备份云…

手机照片导入电脑步骤_如何将手机中的照片、视频快速的保存到U盘上?3分钟教你详细步骤...

手机拍照功能是越来越强大了。生活中,不少的朋友都喜欢拍照。拍着拍着不知不觉就存了许多的照片,占用很大的空间。手机照片和视频都是我们非常重要的回忆,许多人都不愿意删除。为了节省我们手机的空间,许多人都会选择将手机照片导…

筒仓计算表格_身份反模式:联邦筒仓和意大利面条身份

筒仓计算表格分析公司Quocirca的最新研究证实,现在许多企业的外部用户比内部用户更多:在欧洲,有58%的企业直接与其他企业和/或消费者的用户进行交易; 仅在英国,这一数字就达到了65%。 如果回顾历…

C/C 宏替换详解

1. 基本形式#define name replacement_text 复制代码通常情况下,#define 指令占一行,替换文本是 define 指令行尾部的所有剩余部分,但也可以把一个较长的宏定义分成若干行,这时需要在待续的行末尾加上一个反斜杠符 。宏定义也可以…

android webview 设置文字颜色,android webView 修改页面字体颜色

webview加载一个界面后,在onPageFinished中加入修改页面字体颜色css,如下String nightCode "";try {InputStream is getResources().openRawResource(R.raw.day);byte[] buffer;buffer new byte[is.available()];is.read(buffer);is.close(…

win10更新助手_快升级!win10精简版不到10G,比win7还干净流畅,无需更新!

在整个PC端操作系统中,最成功的得主自然要说微软。毕竟微软发布的XP、win7操作系统那可是风靡全球,占用的用户资源十分庞大。单单因为这两个操作系统就吸引到了足够的用户,整个装机下载量可真不是盖的,说微软是PC端的"老大&q…

openshift命令_使用命令行工具创建WildFly OpenShift应用程序

openshift命令通过使用快速入门,可以轻松地在OpenShift上配置WildFly的新实例。 只需单击一下,您就可以准备就绪! 通常,OpenShift的高级用户使用命令行工具 。 但是,您无法使用CLI工具创建WildFly墨盒。 但现在已解决…

android 加解密的速度和什么有关系,Android 加解密类Cipher

近日在做一个关于短信及文件加解密的小项目,查看了一些Android加解密方面的知识。关于加解密这部分以前完全没有接触过,所以网上乱翻了一天对于什么DES,AES,RSA,BASE64,MD5之类的还是懵懵懂懂,这…

redis缓存原理与实现_SpringBoot整合Redis缓存,手把手教你一步一步实现

推荐学习分布式大全:反向代理/Redis/中间件/MySQL/消息,挑战阿里P7必备都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”微服务架构之春招总结:SpringCloud、Docker、Dubbo与SpringBoot一、基本概况为什么使…

C 实现高性能内存池

版权一、概述在 C/C 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑,这时候随之而来的有这样一些问题:是否有足够的内存可供分配? 分配失败了怎么办? 如何管理自身的内存使用情况…

【计算理论】06 可归约性

文章目录 本章要点可归约性映射可归约图灵可判定归约证明 H A L T T M HALT_{TM} HALTTM​不可判定 E T M E_{TM} ETM​不可判定 R E G U L A R T M REGULAR_{TM} REGULARTM​不可判定 E Q T M EQ_{TM} EQTM​不可判定 图灵可识别的归约性参考 本章要点 可归约性定义&#xff…

组件注入 # 注入的属性_注入域对象而不是基础结构组件

组件注入 # 注入的属性依赖注入是Java(以及许多其他编程语言)中广泛使用的软件设计模式,用于实现控制反转 。 它提高了可重用性,可测试性,可维护性,并有助于构建松耦合的组件。 如今,依赖注入是…

docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目

本文同名博客老炮说Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/实战项目等文章资料SentinelNacos 是微服务环境搭建必不可少的两个组件,这里给大家推荐一套微服务教程:SpringCloud微服务电商项目教程…

flyme Android7.0 root,手把手教你如何免ROOT卸载Flyme7系统自带APP

本教程需要使用adb,adb的全称为Android Debug bridge,就是起到调试桥的作用。借助adb工具,我们可以管理设备或手机模拟器的状态。本教程需要使用adb,adb的全称为Android Debug bridge,就是起到调试桥的作用。借助adb工…

C语言 -- 字符串中根据特定字符(串)分割

版权C语言字符串操作函数有很多,这里举出需要用到的,其他请自行查找。1、len strlen(p) ;//取字符串长度 原型:size_t strlen(const char *s); 功能:统计字符串string中字符的个数,字符串的长度在 size_t…

javaone_JavaOne 2014:会议与合同利益冲突

javaone杜克街咖啡馆,工程师可以在街上进行走廊交谈 。 与签约不兼容 我的第11届JavaOne会议(2004年至2014年为11 10 1)非常出色。 值得参加此活动并结识社区中所有的人。 现在,这里是绅士的,但 。 除了经济上的明显…