免费注册 查看新帖 |

Chinaunix

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

[C] 学习编程的几点看法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-24 20:04 |只看该作者 |倒序浏览
很多人开始学习一种编程语言,典型的比如C语言,在学习到一定程度以后,比如已经能够熟练应用if else, while , for 等等语句编写程序解决简单的逻辑智力题等等,学着学着突然迷茫了,不知道C语言有什么作用。同样的,在学习Java的时候,心血来潮,把《thinking in  Java》从头到位学习了一遍,把上面的练习题全做了一遍,不可谓不刻苦。但是学习完以后,也迷茫了。不知道能用Java做点啥。

进一步的,听到有高手说算法,数据结构很重要,于是又苦读一番算法的书。又听到有高手说Linux内核开源,学会了感觉如何如何酷,于是心痒痒又钻研一番Linux内核源代码。结果愣是啥也没学会。程序没编出几个来,自己感觉自己啥都懂一点,但是啥也不会。也许还继续看看网络编程第二卷,捣鼓捣鼓socket。等等。

看看招聘广告,一般都是这样的。精通C/C++,精通XX数据库,熟悉TCP/IP网络协议..扪心自问,我C++只懂得一些类的概念,C++只编写过几个练习题。C,我倒是很熟悉,但是别人问我精通不,我自己也没底。面试的时候没底气,工作的时候没自信。


其实,这主要是有一个概念没有分清楚。不清楚什么叫做业务,什么叫做手段。


比如,一个人做usb相关的开发,usb的相关知识就叫做业务知识。虽然USB的实现大多是C语言实现,但是那些知识不叫做C语言的知识,C语言只是实现USB相关协议的一种手段。 也可以使用C++, Java或者其它语言来实现。

又比如做路由协议,你要懂路由协议相关的知识。 同样它大多是用C语言实现的。但是这些协议知识,无穷无尽的RFC,都是业务知识。

比如你想自己写一个FTP工具,FTP以及相关的只是就变成了业务知识,至于你想采用C,C++或者其它来实现,那只是一种手段。看你的熟悉程度和业务的需要等具体情况。

知道了这点,应该知道什么叫做懂得C语言了吧。能够一个小时内独立编写一个找出两个字符串的最大子字符串的程序,那么你的C语言就入门了。因为你已经能够熟练的应用if else, while语句,同样,能够编程实现如下这道逻辑推理题,那么你应该知道如何定义结构体,枚举类型等语言知识。并且逻辑思维也不错。可以来做程序员。



顺便想说一点,操作系统是每个程序员都必懂的东西,而且是越多越好,但是是不是每个人都应该去钻研linux内核源代码呢?窃以为,除非你是做内核开发或则内核移植相关的工作,此时内核代码的了解成为你的业务知识,你没必要花太多的时间去研究这个。那些特懂内核的人也没必要太拽,别人或许比你更懂网络知识。每个人都有自己的业务,方向。努力把它学好学精,同时把业务需要的语言,哪怕只有一种语言,学好了。你就是牛人了。


逻辑题:请编程实现,时间一小时。
某天!一家珠宝公司被盗!警方怀疑是甲,乙,丙,丁四个人中的一个,因此对四人进行问话。
甲说:我不是强盗! ,乙说:丁是强盗,丙说:乙是强盗,丁说:我不是强盗
这四个人中只有一人说的是真话。请问谁是强盗!?

论坛徽章:
0
2 [报告]
发表于 2008-06-24 20:32 |只看该作者

回应一下!哈哈请正!不是很熟悉C的语法!

main()
{
for (a=-1;a<=0;a++);
{
  for (b=-1;b<=0;b++);
   {
     for (c=-1;c<=0;c++);
      {
        for (d=-1;d<=0;d++);
          {
            if a+b+c+d=-1 then
            m=0;
            if a<>-1 then m=m-1;
            if d=-1  then m=m-1;
            if b=-1  then m=m-1;
            if d<>-1 then m=m-1;
           }
      }
   }
}
if m=-3 then
    if a=-1 then "it is a!~";
    if b=-1 then "it is a!~";
    if c=-1 then "it is a!~";
    if d=-1 then "it is a!~";
}

论坛徽章:
0
3 [报告]
发表于 2008-06-24 20:43 |只看该作者
呵呵,不是按照我的意思写的。

论坛徽章:
0
4 [报告]
发表于 2008-06-24 20:54 |只看该作者
是啊,语言就是一个工具而已

论坛徽章:
0
5 [报告]
发表于 2008-06-24 20:57 |只看该作者
你是什么意思,讲一下,没有弄懂你是什么意思

论坛徽章:
0
6 [报告]
发表于 2008-06-24 20:59 |只看该作者
你不会让我用逻辑知识进行解答吧,那还叫编程实现啊!

论坛徽章:
0
7 [报告]
发表于 2008-06-24 21:03 |只看该作者
好像林锐那本书上有那道题

论坛徽章:
0
8 [报告]
发表于 2008-06-24 21:04 |只看该作者

回复 #1 yy_galois 的帖子

进一步的,听到有高手说算法,数据结构很重要,于是又苦读一番算法的书。又听到有高手说Linux内核开源,学会了感觉如何如何酷,于是心痒痒又钻研一番Linux内核源代码。结果愣是啥也没学会。程序没编出几个来,自己感觉自己啥都懂一点,但是啥也不会。也许还继续看看网络编程第二卷,捣鼓捣鼓socket。等等。


惭愧啊  我就是这样的!!!!!

论坛徽章:
0
9 [报告]
发表于 2008-06-24 21:06 |只看该作者
楼主弄个答案出来,瞧瞧!

论坛徽章:
0
10 [报告]
发表于 2008-06-24 21:13 |只看该作者
按照计算机的处理步骤,应该是这样,假设甲说的是真话,看乙丙丁之间的话是否与都是假话有冲突;如果有冲突,则假设乙的话是真话,看甲丙丁之间的话是否与都是假话矛盾;。。。依此类推。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP