说说我的C语言学习经历

shellfish567 2010-01-11 12:39:36
算起来从我真正学习C开始到现在也就半年时间。
2009年6月多,在当了半年多的计算机启蒙老师后,觉得实在没什么前途,毅然离职,参加了软件园的一家嵌入式培训机构学习,交了1W多块钱,学了4个多月,至于具体哪家不说了,免得说是广告贴。在刚上课之前有C预科班10天,我从基本的#include <stdio.h>练起,别笑话,刚开始我真的连最基本的这个头文件都需要看着书写。培训期间所有的课程和坐火箭一样的推进,速度很快,课程很多,可是每门课程也就几天时间,算起来一周上的课可以比得上大学一学期的,当然,尽管自己努力的学,记,忘掉的依然很多很多,我记得给我们发的C语言的书是《C语言程序设计》,也就是当参考书看,而不是每天翻着书看,写程序,不理解,看书,还不理解,写程序测试,曾经卡在指针上卡了很久,可是这个必须得会,晚上回家就看书看书,白天上课写程序,很怕指针,但是必须得用,用着用着就理解了,爱上了。
算下来,我看的C语言方面的书很少,也没太多时间让我去看书。4个多月,写的代码应该有1W多行吧,看起来挺多,每天算下来也就100多行,不过通过这么个熟手过程,很多东西都不会发生,比如malloc怎么写,参数是什么,写多了自然就记住了。

原本以为,学了C语言就是学了乾坤大挪移,很无敌,就什么都能做了,实际上也是这样的,但是还需要很多东西。比如各种各样的库,对硬件的了解(比如各个接口地址等),编程思想(比如算法),这些又是作为具体工作来说进行升华的东西。

前几天在论坛发帖子说过我那破程序的效率问题,也就是AES算法那个,同样是C语言写的,可是和OPENSSL等库对比起来,效率相差几十倍,去看了SSL里边的实现,许多操作都是用位进行实现的,>>,<<,&,| 就这些些操作代替了复杂的加减乘除,看来对C的功底和人家还是相差太大。

裁剪kernel内核的时候,看到的是复杂的、优美的、近乎于看不懂的代码,goto更是随地大小便,可是还是得看,看多了就习惯了。

现在,对C仍然有很多不了解,但是不妨碍我工作,函数不会了,查C标准库,查GG。做越来越多的算法效率问题,越发觉数学知识在编程中的重要,当然,如果比较浅层的不需要。


个人碎语……
...全文
1030 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoxingcool 2011-10-17
  • 打赏
  • 举报
回复
我是大四的,,现在才学习,,希望自己为迟不晚
huanmie_09 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 73 楼 shellfish567 的回复:]
适当的投资是必要的,舍不得孩子套不住狼嘛,虽然交了1W多,但是我现在每月能拿3000多4000,进入软件行业来说,值了。我个人觉得,为了学习及提高花钱绝对是值得的,在这上面不是该省的时候引用 72 楼 ganagang 的回复:
花那么多钱啊,唉,给大家多好

[/Quote]
IT培训,动不动就是上万,而依旧有那么多毕业生或者在校的学生去参加,从一个方面也反映了大学计算机方面的教育太落后了
shellfish567 2010-01-29
  • 打赏
  • 举报
回复
适当的投资是必要的,舍不得孩子套不住狼嘛,虽然交了1W多,但是我现在每月能拿3000多4000,进入软件行业来说,值了。我个人觉得,为了学习及提高花钱绝对是值得的,在这上面不是该省的时候[Quote=引用 72 楼 ganagang 的回复:]
花那么多钱啊,唉,给大家多好
[/Quote]
z569362161 2010-01-29
  • 打赏
  • 举报
回复
学习
ganagang 2010-01-28
  • 打赏
  • 举报
回复
花那么多钱啊,唉,给大家多好
  • 打赏
  • 举报
回复
楼主的精力和我非常类似,都是好学呀
redex 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 shellfish567 的回复:]
引用 49 楼 redex 的回复:
抽象不重要,数学也不重要

关键是能做出好的东西才是最重要的

如果不考虑效率的话,是这样的。做东西也是分层次的,做上层应用也是做,
做驱动也是做,做内核也是做,用的东西和要求不一样罢了
[/Quote]

现代软件本身就是应用驱动的,数学是围绕着人的需求在发挥作用而不是相反
比如:编译器,其效率就非常低,但因为大家觉得编译器的发明有利于更好地
开发应用,所以才会去应用或研究数学

换言之,是因为有应用需求,所以才需要数学
而不是因为有数学,所以才有应用需求
---中国大学应试化教育的根本缺陷就在于此:分不清动机和结果的关系,颠倒
了动机和结果,所以它才被人们骂为“应试教育”

这个和效率高低是两个不同的概念,没什么必然联系
flyyyri 2010-01-27
  • 打赏
  • 举报
回复
up
就想叫yoko 2010-01-27
  • 打赏
  • 举报
回复
借鉴借鉴~~~~~~
luoquanjun 2010-01-27
  • 打赏
  • 举报
回复
讲的很好啊,我也是刚开始学c
ccssddnnxujian 2010-01-27
  • 打赏
  • 举报
回复
路过
xl85285033 2010-01-27
  • 打赏
  • 举报
回复
我想学C语言,谁能告诉我C它是做什么的
geshuwei 2010-01-27
  • 打赏
  • 举报
回复
熟能生巧
sax小bin 2010-01-27
  • 打赏
  • 举报
回复
楼主一起加油啊。
xiaoyafj 2010-01-27
  • 打赏
  • 举报
回复
接分,加油
God_125 2010-01-27
  • 打赏
  • 举报
回复


up
多多学习.0....
kx312532153 2010-01-27
  • 打赏
  • 举报
回复
ding
bladesoft 2010-01-23
  • 打赏
  • 举报
回复
那楼主学的还是挺快的,支持一个。不过一下子学太多也容易遗忘,建议把有空回过头再看看以前的知识,祝楼主学有所成。
C001u1u 2010-01-23
  • 打赏
  • 举报
回复
俺都17了
yali88 2010-01-22
  • 打赏
  • 举报
回复
ding
加载更多回复(55)
废话不了,下面进入正题,学习FPGA经历了这么几个阶段: ①、Verilog语言的学习,熟悉Verilog语言的各种语法。 ②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。 ③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。 先来第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在 Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像 systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语 言。 其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习Verilog的书籍: ①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。 ②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。 学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。 Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。 刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方 法等,不过做到后面发现CPLD的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生 了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载 口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的FPGA是 cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪 测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数 据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好: ①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法 (IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。 ②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。 ③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听他叫单片机,他的全称是什么也许并不太清楚, 更不用他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什么东西了。还是先我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所的:我知道有种芯片叫单片机,具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候,我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出,或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上书或者资料,自己却什么也不知道了,根本不用自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似,编程的思想可以是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来是并不能代替硬件的),即使你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概念还是比较模糊,现作如下明:

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧