免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 16869 | 回复: 23
打印 上一主题 下一主题

[C] 【好书推荐】基于C11标准:感受来自C语言的魔法(获奖已公布) [复制链接]

论坛徽章:
3
15-16赛季CBA联赛之上海
日期:2017-11-16 13:45:42CU十四周年纪念徽章
日期:2017-11-16 17:03:0215-16赛季CBA联赛之北京
日期:2017-11-23 16:03:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-08-04 16:54 |只看该作者 |倒序浏览

本次活动获得奖品的童鞋有:

1.获得2017 SACC 大会门票: renxiao2003

2.获得技术图书《C语言编程魔法书:基于C11标准》:
nail78     
东风玖哥     
kangtian   
dorodaloo   


请以上6位获奖人员在9月30日前将姓名、电话、邮箱、公司、职务、快递地址站短给  yejia80550708 ,以便尽快给大家发放礼品。

话题背景:
“无C语言,不编程”,在软件定义世界的时代,Linux/Unix、Windows、PHP、Redis、Android内核等你耳熟能详的系统、语言或者软件都是基于C。

C语言最为一门更接近硬件底层的高级编程语言具有非常良好的抽象力、表达力和灵活性。此外,它具有非常高效的运行时性能。所以C语言从1970年直到现在都作为系统级编程的首要编程语言。

C语言博大精深,其思想也奠定了后续众多语言的设计基础,但精通C语言绝非易事,今天和我们聊聊你与C语言的故事。



话题讨论:
1、   C语言的C11 标准有哪些改进的地方?会对各类C项目起到哪些帮助?
2、   C11 为何不如 C++11 流行?如果说微软对 C 不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区 C 才是一等公民,为何新标准没有成为主流呢?
3、   最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?
4、   C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?


活动时间:

2017年8月4号—9月1日


活动奖励:

本期活动,我们将特设1个最佳优胜奖,送SACC2017大会门票一张;

同时,我们将会选取5个精彩回复,各送技术图书《C语言编程魔法书:基于C11标准》一本;



作者:陈轶
出版社: 机械工业出版社
ISBN:9787111565215
出版时间:2017-06-01
开本:16开
版次:1
分类:计算机与互联网 > 编程语言与程序设计 > C语言


购书入口


内容介绍:

·预备知识篇(第1~3章),为初级读者提供计算机理论知识和相关概念,如编程模式、主流开源编译器,以及搭建C编程环境的方法。
·基础语法篇(第4~11章),学习C语言的基石——基本语法与使用讲解,涵盖基本元素、基本数据类型、用户自定义类型、数组和指针(难点)、控制流语句、函数。
·高级语法篇(第12~16),讲述了C11编程的一些高级特性,进阶之用。涵盖:
-目前所支持的所有预处理器特性;
-编译上下文作用域、名字空间、连接属性;
-C11标准支持的类型限定符的标准用法与注意事项;
-深刻解读C语言语法体系的核心——类型系统;
-C11标准中表达式及其计算优先级,以及“左值”;
-主流编译器所采用的函数调用约定;
-主流C语言编译工具构建静态库/动态库的方法与实践。
·语法扩展篇(第17~19章)讲述了GCC与Clang编译器对C语言的扩展,以及C语言的设计理念、未来C语言新添与排除特性。需要对底层交互与开发深入了解的读者大有裨益。
·项目实践篇(第20~21章),UTF-8与UTF-16编码程序编写,基于控制台的计算器程序。精巧而知识点全面。


SACC 2017 来啦~

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭!

今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。






欢迎扫码 关注SACC官方微信 ,获取最新信息



-------------------------------------------------------------------------------


欢迎大家发帖讨论,分享是美德,也希望CU这个平台带给大家进步和成长,有任何问题,请站短联系!

技术讨论,请加QQ群:203848540

ChinaUnix公众微信:




论坛徽章:
3
15-16赛季CBA联赛之上海
日期:2017-11-16 13:45:42CU十四周年纪念徽章
日期:2017-11-16 17:03:0215-16赛季CBA联赛之北京
日期:2017-11-23 16:03:45
2 [报告]
发表于 2017-08-04 17:03 |只看该作者
我也想要大会门票怎么办


上图:




































论坛徽章:
1
2015亚冠之莱赫维亚
日期:2015-05-25 09:51:14
3 [报告]
发表于 2017-08-05 09:24 |只看该作者
1、   C语言的C11 标准有哪些改进的地方?会对各类C项目起到哪些帮助?
最主要的就是增加了对多线程编程的支持,另外就是对多国语言支持更好。但说实话,对实际开发项目并没有多大帮助。因为第三方库已经占得了先机。

2、   C11 为何不如 C++11 流行?如果说微软对 C 不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区 C 才是一等公民,为何新标准没有成为主流呢?
这是语言本身的特质决定的,不是语言标准决定的。C++在代码重用、超大型项目上的优势是巨大的。回到C本身,C11出现得太晚了,其出现的时候,GCC实际上已经成为事实标准。

3、   最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?
对我来说操作符重载令我恐惧。操作符重载弊大于利。

4、   C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?
应该是lua最易上手,C语言是朴素的语言,但是绝不简单。go的高级特性也令人头疼。

论坛徽章:
4
IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:002015亚冠之阿尔艾因
日期:2015-11-08 10:27:01CU十四周年纪念徽章
日期:2020-11-05 14:10:23
4 [报告]
发表于 2017-08-07 11:03 |只看该作者
1、   C语言的C11 标准有哪些改进的地方?会对各类C项目起到哪些帮助?
      
       增加了对齐操作符alignof和函数aligned_alloc();增加了Noreturn函数标记;增加了_Generic 关键词;增加了静态断言;增加了多线程支持;新增quick_exit()函数等等。对C项目还是有些帮助,有些以前靠第三方包来支持的,现在已在标准里了。

2、   C11 为何不如 C++11 流行?如果说微软对 C 不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区 C 才是一等公民,为何新标准没有成为主流呢?

      C++是高级语言,功能强大,封装了很多东西,不必再重复造轮子,适合一般人用;C语言更接近底层语言,性能可能更好。新标准没有成为主流,是因为新标准并没有出现特别有创新意义的东西,C99标准相比变化也不太大,很多第三方包里已经实现了。

3、   最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?
   
      C++的模板和重载都会让C程序员恐惧吧。匿名函数,也叫lambda表达式,C++有,而C11没有,不过我相信在C的下一个新标准里会把这个加上。

4、   C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?
      
       对其他三种语言不怎么了解,也就无从比较,我接触过的语言中,感觉python还是很容易上手的。

论坛徽章:
8
15-16赛季CBA联赛之青岛
日期:2017-05-25 14:27:3415-16赛季CBA联赛之深圳
日期:2017-07-19 09:39:23CU十四周年纪念徽章
日期:2017-08-29 16:08:0115-16赛季CBA联赛之佛山
日期:2017-08-30 19:12:5515-16赛季CBA联赛之山西
日期:2017-12-20 13:50:5519周年集字徽章-19
日期:2019-09-12 16:11:0719周年集字徽章-庆
日期:2019-09-12 16:13:3215-16赛季CBA联赛之北控
日期:2020-04-26 16:30:57
5 [报告]
发表于 2017-08-09 16:48 |只看该作者
1、C语言的C11标准有哪些改进的地方?会对各类C项目起到哪些帮助?
(1)alignof(T)对齐处理
(2)_Noreturn表示无返回结果
(3) _Generic进行宏函数重载
(4)_Static_assert进行静态断言
(5)gets_s()取代gets()
(6)fopen()新模式
(7) 匿名结构体、联合体。
(8)多线程
(9)quick_exit()终止程序
(10)复数宏和浮点数宏。
(11)时间单位为纳秒的timespec结构体

2、C11 为何不如 C++11 流行?如果说微软对 C 不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区 C 才是一等公民,为何新标准没有成为主流呢?
C11存在严重的向下兼容问题,老项目修改极其繁琐。况且用C的人性格都比较守旧。

3、最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?
C++能创建对象,面向对象比面向过程有更大的优势

4、C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?
很明显Go上手最容易

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
6 [报告]
发表于 2017-08-12 13:03 |只看该作者
话题讨论:
1、   C语言的C11 标准有哪些改进的地方?会对各类C项目起到哪些帮助?
1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 <stdalign.h>。
2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。
3. _Generic 关键词,有点儿类似于 gcc 的 typeof。
4. 静态断言( static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。
5. 删除了 gets() 函数,C99中已经将此函数被标记为过时,推荐新的替代函数 gets_s()。
6. 新的 fopen() 模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
7. 匿名结构体/联合体,这个早已经在 gcc 中了,我们并不陌生,定义在 6.7.2.1 p13。
8. 多线程支持,包括:_Thread_local,头文件 <threads.h>,里面包含线程的创建和管理函数(比如 thrd_create(),thrd_exit()),mutex (比如 mtx_lock(),mtx_unlock())等等,更多内容清参考 7.26 节。
9. _Atomic类型修饰符和 头文件 <stdatomic.h>,见 7.17 节。
10. 带边界检查(Bounds-checking)的函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。更多参考 Annex K。
11. 改进的 Unicode 支持,新的头文件 <uchar.h> 等。
12. 新增 quick_exit() 函数,作为第三种终止程序的方式,当 exit() 失败时可以做最少的清理工作(deinitializition),具体见 7.22.4.7。
13. 创建复数的宏, CMPLX()
14. 更多浮点数处理的宏 (More macros for querying the characteristics of floating point types, concerning subnormal floating point numbers and the number of decimal digits the type is able to store)。
15. struct timespec 成为 time.h 的一部分,以及宏 TIME_UTC,函数 timespec_get()。
这些改进的地方对程序员来说增加了不少的功能,可以减少原来自己实现的一些功能代码。

2、   C11 为何不如 C++11 流行?如果说微软对 C 不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区 C 才是一等公民,为何新标准没有成为主流呢?
C++11的改进:
1.对C++核心语言的扩充
2.核心语言运行期的强化(右值引用和 move 语义;泛化的常数表达式;对POD定义的修正)
3.核心语言建构期表现的加强(外部模板)
4.核心语言使用性的加强(初始化列表;统一的初始化;类型推导[auto关键字];以范围为基础的 for 循环;Lambda函数与表示法;另一种的函数语法;对象构建的改良;显式虚函数重载;空指针;强类型枚举;角括号;显式类型转换;模板的别名;无限制的unions)
5.核心语言能力的提升(变长参数模板;新的字符串字面值;用户自定义的字面值;多任务存储器模型;thread-local的存储期限;使用或禁用对象的默认函数;long long int 类型;静态assertion;允许sizeof运算符作用在类型的数据成员上,无需明确的对象
6.C++标准程序库的变更(标准库组件的升级;线程支持;多元组类型;散列表;正则表达式;通用智能指针;可扩展的随机数功能;包装引用;多态函数对象包装器;用于元编程的类型属性;用于计算函数对象返回类型的统一方法)
不管怎么说,C++是面向对象的编程语言,在当前的大环境中,面向对象还是一个主流的开发。虽然说C在开源社区是一等公民。但毕竟C的就业范围比较小。不如面向对象语言这么广泛。

3、   最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?
面向对象。

4、   C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?
觉得还是C吧。

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
7 [报告]
发表于 2017-08-18 10:01 |只看该作者
毕竟C11没有增加了很多的功能,
C语言的C11 标准感觉 == C99.1
_Generic比较常用

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
8 [报告]
发表于 2017-08-18 19:22 |只看该作者
这本魔法书,谁能告诉我可以从哪里下载?
免费高速下载啊!

论坛徽章:
48
15-16赛季CBA联赛之青岛
日期:2021-01-07 13:41:2315-16赛季CBA联赛之上海
日期:2020-12-01 18:02:0720周年集字徽章-20	
日期:2020-10-28 14:14:2620周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之天津
日期:2020-10-18 22:51:412016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2015-12-22 13:30:48操作系统版块每日发帖之星
日期:2015-12-07 06:20:00操作系统版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-08-05 18:46:082015年亚洲杯之巴勒斯坦
日期:2015-04-19 10:42:502015年亚洲杯之巴林
日期:2015-04-09 08:03:23
9 [报告]
发表于 2017-08-23 13:23 |只看该作者
1、C语言的C11标准有哪些改进的地方?会对各类C项目起到哪些帮助?
   1)对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及<stdalign.h>头文件)。
   2)_Noreturn函数标记,类似于gcc的__attribute__((noreturn))。
   3)_Generic关键字。
   4)多线程(Multithreading)支持,包括:
     _Thread_local存储类型标识符,<threads.h>头文件,里面包含了线程的创建和管理函数。
     _Atomic类型修饰符和<stdatomic.h>头文件。
   7)增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件<uchar.h>.
   删除了gets()函数,使用一个新的更安全的函数gets_s()替代。
   9)增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。
   10)增加了更多浮点处理巨集(宏)。
   11)匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。
   12)静态断言(Static assertions),_Static_assert(),在解释#if和#error之后被处理。
   13)新的fopen()模式,(“…x”)。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
   14)新增quick_exit()函数可作为第三种终止程序方式。当exit()失败时可以做最少的清理工作。

总体来说,C11在原来C99的基础上做了些完善,没什么大动作,可以算是C99.1。有些标准化了,有些多了安全检查等等。

2、C11为何不如 C++11 流行?如果说微软对C不感兴趣,还可以理解。毕竟Windows 上 C++ 的更多。但开源社区C才是一等公民,为何新标准没有成为主流呢?

这个要从他们两者的语言说起,C语言是面向过程的,而C++是面向对象的。C的重点在于算法和数据结构,侧重于底层操作;C++有类、继承、类模板、C++标准库,可以说是一个全新的语言。其实能用好C没那么容易,没C++那么容易上手,而对于刚毕业的新手对于底层操作也了解不多,很难在短时间运用自如;而对于企业来说,各项目都希望尽快完成,大多都是采用C++、Java这类面向对象的语言,而不涉及底层的用到C的地方也不多了。用的人不多是不可能成为主流的。

3、最让C程序员恐惧的C++特性是哪一个?哪个C++拥有而C没有的feature是你认为弊大于利的呢? 或者说, 哪个C++有而C没有的pitfall是你无法接受的?

兼容C吧

4、C、Scheme、Lua 和 Go 究竟哪个最简单(最易上手/复杂度最低/最易精通)?

这个如果对于有基础的人来说,可能Lua或Go觉得简单。C相对来说不算最易精通的,Scheme没玩过不好说。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
10 [报告]
发表于 2017-09-13 20:21 |只看该作者
2000来元的大会门票。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP