飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4841|回复: 10

[C/C++] 老K磕磕绊绊学C系列之一

[复制链接]

该用户从未签到

发表于 2009-6-7 19:21:58 | 显示全部楼层 |阅读模式
开篇明义---之老K心目中的C语言

在Nisy坛主的带领下,从新开始了C语言的学习之路。老大的阅历和独辟蹊径的讲课手法让我收益良多。在此也愿把自己学习C语言的经历写下来,对自己的三十而立后从新开始学习C语言来说,一来算是一种告慰,二来如果能对阅读这些文字的朋友有些许的帮助将是我最大的欣慰。
        首先推荐下学习辅助的书籍:
1.        C程序设计语言(中文第2版)和Prentice Hall.-.The C Programming Language(2nd Edition)。此书为两大牛人Brian W. Kernighan & Dennis M. Ritchie所写。无出其右的了,1978年为该书第一版,1988年出版第二版,此后无再版出现,有此可见该书的写作功力和其远见卓识的水平。让后辈实在是深深为之折服。
2.        深入理解计算机系统。Randal E. Bryant & David O’Hallaron所著。对于深入理解C程序是如何被构造,如编译器是如何翻译指针、循环、过程和返回以及Switch语句。并且更广泛和从实现角度探讨了包括硬件和系统软件的链接、加载、进程、信号、新能优化、评估等一系列的过程以及实现。可谓经典中的经典,尤其是在配合C语言学习的方面,相信是不可或缺的一本优秀作品。
3.        计算机程序设计的艺术。该书现已出版三卷,Donald E.Knuth著。该书作者打算出版共7卷,但是迄今为止真正完成的还只有前三卷。作者从1962年写起,可见大师写作书籍时候的审慎态度和敬业精神,实非现在中文一些剪刀加浆糊之流所能相比拟的。并且作者为了排版而花费10年时间研制用于计算机排版的TEX和METAFONT系统,可见功力之深,着实让人感叹国外作家的强烈责任感和敬业精神。另外作者有意对每一个技术、排版或者历史错误的第一个发现者支付2.56美金。颇有吕不韦当年一字千金之风了。
首先引用下大师关于C语言的定位,以对于我们的C语言学习起到一个提纲挈领的作用。C语言定位于:C是一种通用的程序设计语言,它有简洁的表达式,先进的程序流程控制和数据结构以及丰富的操作符;它不是一种“高级”语言,这里的高级是指的它距离计算机硬件的远近而不是现实中的官位高低,嘿嘿;它定位为不是一种大型的语言,不为任何一种特殊应用而优化处理。而正是缺少这些条条框框的束缚和它的通用性,使得它与很多的功能更强大的程序语言相比,对于很多的工作更灵活、高效。这里我暂时不知道所谓的更强大的语言指的是那些?(答案已经搜索到了见第二页,如主要用于大型机商业数据处理应用的COBOL等功能强大而体积庞大)
在这里还想说一下自己的一些感想就是,C一开始定位并不是对于程序设计一无所知的人,其一开始针对的对象应该是熟悉基本的程序设计理念,如变量、赋值语句、循环以及函数等。所以我觉得这也是导致很多人感觉C是一门很难学习的语言的原因之一。这一观点从另一方面也可以得到佐证,C很多重要的概念源于Martin Richards 开发的BCPL语,而更确切的说是源于B语言,B语言是1970年Ken Thompson为第一个Unix系统在PDP-7上运行而开发出了的,BCPL和B语言都是一种无类型语言(typeless language)。C语言初始的设计思想为:程序员或者学习者知道自己在做什么,知道申请的空间怎么利用。唯一的要求就是程序员要明确地表达他们的意图。所以这一来源也决定了C语言的定位并非是对于程序设计一无所知的初学者,而应该是定位为对于编程比较熟悉的,更确切的说是定位为程序员。希望我这些考证并不会打消大家对于C语言学习的兴趣,而应该对于大家学习C语言时候的心态有个更好的定位。套用Google全球CEO埃里克-施密特的话说,中国有五千年的历史,Google对在中国市场的成功拥有五千年的耐性。
   
关于函数返回值:可以是基本数据类型、结构、联合以及指针类型的值。任何函数都可以递归调用。但是需要注意的是局部变量的地址或者指针都是错误的。
关于变量的声明:可以仅仅在一个函数内有效,可以在一个源文件内有效,还可以在整个程序中都有效。
C语言不提供注解处理字符串、集合、列表以及数组等复合对象的方作。虽然可以讲整个结构作为一个单元进行拷贝,但是在C语言中没有处理整个数组或字符串的操作方式。除了由函数的局部变量提供的静态定义和堆栈外,C语言没有定义任何存储器分配工具,也不图工堆栈和无用内存回收工具。最后C语言本身没有提供输入/输出功能,没有READ或者WRITE语句,也没有内置的文件访问方法。所有这些高级的机制必须由显式调用的函数提供。C语言的大部分实现已合理的包含了这些函数的标准集合。
类似的,C语言只是提供了简单的控制语句。而不提供并行操作、协同例程等的高级操作。尽管缺少其中某些特性看起来好像是一个严重不足,但是把语言保持在一个适度的规模会有很多的好处(这种设计思想在Unix系统中得到了很好的体现。系统短小精悍,易于理解。)
注:计算机发展史上出现的形形色色的语言,其中很多已经消失掉,与C语言同时代的语言也已经几乎消失殆尽了。
阵列编程语言:
A+ - Ada – 汇编语言 - B - Brain** - COBOL - Curl - D - Eiffel - Erlang - FORTRAN - IronPython - Java - Jython - LISP - Lua - SCILAB - MATLAB - MATHEMATICA - Nuva - Oberon - OCaml - Perl - PHP - PostScript - Powerbuilder - Python - R - REXX - Ruby - Self - Smalltalk - Tcl/Tk - C# - F# - J# - Microsoft Visual C#
C/C++语言:
C - C++ - Turbo C++ - Borland C++ - C++ Builder- C++/CLI - Objective-C - Microsoft Visual C++
BASIC语言:
BASIC - BASICA - GW-BASIC - QBASIC - QuickBASIC - True BASIC - Turbo BASIC - PowerBASIC - DarkBASIC - ETBASIC - GVBASIC
Visual Basic .NET - Visual Basic - VBScript - Visual Basic for Applications(VBA)
Pascal/Delphi语言:
Pascal语法:(Pascal - Turbo Pascal - Object Pascal - Free Pascal) Pascal+Delphi语法:(Delphi)
ECMAScript方言:
ActionScript - DMDScript - JavaScript - JScript
GPU用着色器语言:
Cg - GLSL - HLSL
学术编程语言:
APL/J - Clean - Haskell - Logo - ML - Prolog - Scheme - SAC
数据库相关编程语言:
Clipper - Visual FoxPro - SQL(PL/SQL - T-SQL) - SQL預存程序
其他编程语言:
ALGOL - Forth - Modula-2/Modula-3 - MUMPS - PL/I – Simula
下面给出的是维基百科中列出的计算机语言的搜索页面:
http://zh.wikipedia.org/w/index. ... ineselect=mediawiki


  C语言的第一阶段已经完成了,Nisy老大也要开始新的课程了。学到了很多,慢慢的写出点东西来。留作纪念。也算是对Nisy无私的一种回报吧。也希望大家都来写一些,一起完成我们共同学C的心得,这种资料比起什么样的C语言教程都更加弥足珍贵。

[ 本帖最后由 kelvar 于 2009-6-8 14:00 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-6-7 20:55:29 | 显示全部楼层
    支持下,大龄学习编程语言很不容易。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-6-8 01:29:27 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-8 08:13:04 | 显示全部楼层
    K哥适合写材料,支持一下:loveliness:
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-8 09:01:29 | 显示全部楼层
    小弟也支持你
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-8 16:57:43 | 显示全部楼层
    老K看这么多啊?小弟我要加倍努力才行喽。像老K看齐

    老K兄弟,那几本书我刚才查了一下当当网的价格大概要300元左右“计算机程序设计艺术”—— 第4卷 第4册 (双语版)生成所有树组合生成和历史,有卖的,看来我要得积点钱才能买。/:011

    [ 本帖最后由 最忌注册 于 2009-6-8 17:12 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-10-25 13:07
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2009-6-8 17:25:05 | 显示全部楼层
    K兄 一盏明灯啊  /:010
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-6-20 11:29:18 | 显示全部楼层
    哎,现在一边工作,一边学习,想要安下心来,真难!!
    /:011
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2009-6-20 12:09:43 | 显示全部楼层
    电子书都在FTP上了,还有几本书没上传。过几天看看跟大家分享下吧。自己水平菜,但是喜欢计算机这东西。呵呵
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-5 00:32:39 | 显示全部楼层
    过来学习下  谢谢了  呵呵  

    感觉挺难的!!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表