本人大一
1
wshcdr 2015-11-19 14:39:27 +08:00
现在没必要了吧
|
2
meloncrashed 2015-11-19 14:44:43 +08:00 via iPhone 1
应该不用,我也在自学。新人大概了解就行了,迅速用程序实现功能比较重要。因为新人更需要激励与成就感。可能学到一定程度再看 c 会有所感悟。
|
3
meloncrashed 2015-11-19 14:45:11 +08:00 via iPhone
新人搞 python 好
|
4
skydiver 2015-11-19 14:45:33 +08:00 4
C 语言这么简单都懒得学……还是别当程序员了
|
5
mechanician 2015-11-19 14:47:15 +08:00 1
大一时就是因为学 C 语言时很有兴趣很有动力,才打算转行当码农的,不过还是拿 pithon 入门好些吧
|
6
mechanician 2015-11-19 14:47:26 +08:00
python = =
|
7
yesiamloki OP @skydiver 并不是懒 只是想确定一个值得花精力的方向 QAQ
|
8
deving 2015-11-19 14:53:05 +08:00
看你想干什么吧.现在总之不该带着偏见去学就对了,那种带着"c 是宇宙最快的高级语言","学了 c 可以鄙视一切其他语言"的心态总是不好的,虽然有了这种偏见会让你在学 c 无聊的时候带来一丝莫名的优越感
|
9
pseudo 2015-11-19 14:53:20 +08:00
如果仅仅是要学会 for , if-else ,基本 OOP 之类的话,很多语言起步都差不多
|
10
pseudo 2015-11-19 14:54:47 +08:00
想要表达的是很多语言都可以作为起步,因为学好一套语言的语法规则再去学别的就很快了
|
11
g00001 2015-11-19 15:03:23 +08:00 1
嘿嘿, C 语言还可以这样玩( aardio 代码 )
code = /** #include <windows.h> __declspec(dllexport) int Msgbox( HWND hwnd ) { struct { const char * message;int id; } argument = { .message = "测试消息来自 C 语言", .id = GetCurrentThreadId() }; SendMessage( hwnd,0xACCE/*_WM_THREAD_CALLBACK*/, "onMessageChange( { string message;int id } )", &argument ); return 0; } **/ import tcc; vm = tcc(); vm.addLib( "user32", "kernel32", "gdi32" ) vm.output( "/bin.dll", code ) import win.ui; var winform = ..win.form({}) winform.messageOnly(); winform.onMessageChange = function(param){ winform.msgbox("调用:" + param.message ); win.quitMessage(); } var dll = raw.loadDll( "/bin.dll",, "cdecl" ); dll.Msgbox( winform.hwnd ); win.loopMessage() |
12
wdhwg001 2015-11-19 15:04:59 +08:00 via iPhone
TL;DR 有,而且推荐学 C ,再学 C++,再学 MFC 背熟,再学 WTL 和 QT 。
我最后悔的事情就是 C 没学好,还养了一身 IDE 依赖症,以至于现在根本做不到用 VC6 写一个简单的桌面程序,大多数时候只能用批处理、 Electron 甚至是易语言和 autoit 糊弄一下… |
13
hienchu 2015-11-19 15:07:19 +08:00
大一还是踏踏实实把基础学好吧,操作系统,算法数据结构,这些东西懂了,语言只是一个实践的工具而已。
|
16
DiamondY 2015-11-19 15:18:39 +08:00
这得看 LZ 要走什么方向了,要往底层或者嵌入式方向走,学 C 可以说是必要的,众所周知 Linux 是用 C 写的;如果往网络方向的话,学 C 就变得没那么必要了;如果是应用方面的话,那么就一半一半吧,学 C 并不十分必要。
还是搞搞计算机基础,看看计算机发展历程,然后确定方向和想做的事情,再定语言吧。 |
17
jackisnotspirate 2015-11-19 15:19:32 +08:00
没必要哈哈
|
18
wdhwg001 2015-11-19 15:20:52 +08:00 via iPhone
@cheng007 启动速度、执行效率和程序体积都是 MFC 和 WTL 优越的资本,连 C#都比不上。
所以…并不是“什么年代”的问题,同样也不是“好不好找工作”的问题,而是“这就是该学的”,就像一定要学好高数一样… 顺便我一直在恶补的还有反汇编和逆向,以及驱动相关…同样是基于这个理由。 |
19
jzfr 2015-11-19 15:34:24 +08:00
@wdhwg001 你一会说 MFC 是口算,一会说 MFC 是高数,请问你倒底分不分得清什么是高数什么是口算?
即然你自己 VC6 用不好、自己都在恶补基础知识,那么你怎么就知道 MFC 是别人应该必须去学的呢? “这就是该学的” - 这种绝对权威不容质疑的语气似乎不该出自一个新人之口,人家用 PHP 用 Python 都可能用到 C 语言,但还就真用不到 MFC 。照你这种逻辑,你还得去恶补机器码才行。 |
20
codingpp 2015-11-19 15:39:05 +08:00
别的都看了,就看 php
|
21
hslx111 2015-11-19 15:39:57 +08:00
不用的话,没必要。不如多深入学学操作系统,数据结构
|
22
FireCat 2015-11-19 15:45:11 +08:00
等以后学深了你就知道 C 语言是多么的重要。建议认认真真把《 C Primer Plus 》看一遍,认认真真完成练习。
|
23
cxl008 2015-11-19 15:46:55 +08:00
有
|
24
wizardforcel 2015-11-19 15:47:03 +08:00 via Android
@wdhwg001
mfc 等于高数?扯吧。 win32api 等于高数还差不多。 学 mfc 对学 qt 有帮助吗?一点用都没有,只是都是拖控件画 gui ,能更熟练一些。 但是有那时间干嘛不一开始就上手 qt ?都是一个 level 的东西 mfc 怎么就高人一等了? |
25
Banio 2015-11-19 15:50:09 +08:00
我这种工作两年 就会用 C 的 没法活了
|
26
FireCat 2015-11-19 15:52:38 +08:00
这问题就像问新手司机开好手动档车有用吗。
|
27
lion9527 2015-11-19 15:53:50 +08:00
没必要, C 看上去高大上,学了还有优越感。然并卵。
你看人家老美的大学都从 python 起步教,跟着别人走就行了。 |
28
wizardforcel 2015-11-19 15:57:20 +08:00 via Android 1
@yesiamloki
如果你要用 c 来开发,需要学 c 语言。如果你要玩 x86 的逆向,需要学 c 语言。 如果你要学 c++,那就学 c++。 c 的一些特性在 c++里面不提倡使用,而且有更好的替代方案。先学 c 的话你会养成一些坏习惯,之后需要拼命忘掉他们。 |
29
feather12315 2015-11-19 15:59:51 +08:00 via Android
也是个新人吧(已经一年了)。
学了 C ,那就紧接着刷数据结构习题吧。 其实,啥语言真的无所谓 |
30
wdhwg001 2015-11-19 16:03:51 +08:00 via iPhone
@wizardforcel MFC 的确很恶心…然而事实上在我这种拿批处理和 electron 糊弄的人眼里连 QT 都嫌麻烦,这也是为什么我提 MFC 了…
至于 win32api ,我是啃 MFC 的时候一起啃的,如果和 QT 一起啃的话可能更吃力一点,毕竟 QT 干净多了… MFC 所谓的高人一等大概是来源于我的偏见吧,见谅了,毕竟身边的人都是拿 VC6 和 MFC 写东西的,因为我看着会吃力所以有点偏见。 @jzfr 同上面。以及 MFC 用处的确不大,然而我所说的“这就是该学的”的意思只是,“如果学校教这个,请把它学好学精”这样子。更方便的,找工作更简单的东西是实用的,但不要以抛下或应付课程内容为代价… |
31
megabits 2015-11-19 16:04:25 +08:00
人生苦短,我学 python
|
32
alexinit 2015-11-19 16:14:54 +08:00 1
根本深不起来的,你多虑了.
|
33
GNiux 2015-11-19 16:32:51 +08:00
作为一个非 IT 从业者,我还是觉得, C 语言才是整个计算机专业的逻辑、理念精髓。
|
34
oska874 2015-11-19 16:33:09 +08:00
好好学吧,考试要考 C
|
35
felixzhu 2015-11-19 16:34:25 +08:00
学你感兴趣的东西,不要管有没有用
因为到最后你会发现反正都是要学的。。。 |
36
zmj1316 2015-11-19 16:36:02 +08:00
不学 C 那么 C++总要学的吧,先点学简单的 C 也没问题吧,不知道 LZ 指的深入有多深,我反正是深不下去。
|
37
skydiver 2015-11-19 16:58:42 +08:00
@yesiamloki 哪一个方向都不白费精力,很多东西都是通的。搞清楚哪个方向最好的唯一办法就是每个都学一遍~
|
38
nicksite 2015-11-19 17:18:12 +08:00
c 语言大法好
|
39
m8syYID5eaas8hF7 2015-11-19 17:55:25 +08:00
有必要。
|
40
clinkzlol 2015-11-19 19:50:34 +08:00
有必要啊,就算 python 起步,可是 python 的源码不也是 C 么。。。
到后面总会遇到需要分析源码的时候的,熟练掌握 C 很有必要。 |
41
ls2110609 2015-11-19 20:28:41 +08:00
当然有
|
42
pandachow 2015-11-19 20:37:27 +08:00
工作嘛还早,兴趣嘛你碰的太少也难说。
由于 C 是少数几门非常易于清晰表达数据结构的语言,而数据结构你是一定要学扎实的,所以我建议你学。 |
43
ayanamist9 2015-11-19 20:41:09 +08:00
现在程序员连 C 都懒得学了?
|
44
anjunecha 2015-11-19 20:52:03 +08:00
要学,毫无疑问。。
这问题就像要不要上大学一样。。。 |
45
haozhang 2015-11-19 20:54:51 +08:00
想学什么学什么,只要坚持都能学成。
|
46
chevalier 2015-11-19 21:03:24 +08:00 2
不会 C 的程序员基本上半残废
是,你可以三分钟用 Tornado 撸一个 Web 服务器出来 但是,不会 C ,意味着你无法理解 Python 的引用 /对象堆 /调用栈等概念,意味着你看不懂 Python 的源码,意味着你无法理解 Linux 的系统调用…… |
47
yxcxx 2015-11-19 21:07:33 +08:00
大一你都懒得学 C ,你是大三大四赶着找工逼着学( js , Python , Java , Php , C#)吗?
大一正是学基础的时候,不学 C 你 Linux 系统编程( apue , unp 等), CSAPP ,还有大把经典的教材用 C 语言描述的你都不学了吗? 再说了, C 又不多难,现在的人已经懒到这个程度了吗? 我:毕业半年的码畜,非相关专业,学编程到现在一年。学了 Python 和 Ruby , Javascript 。后来为了打基础,啃了 K&R 。 |
48
czkwg8 2015-11-19 21:12:47 +08:00
懂的东西多总是不亏本的
|
49
chinvo 2015-11-19 21:17:26 +08:00
个人认为学习一门典型且 simple 的语言,比如 C 语言,是十分必要的基础。不然之后遇到一些比较高深的应用场景会遇到各种坑爹的问题。
|
50
mornlight 2015-11-20 01:11:57 +08:00
可以尝试,但如果不是这个专业的学生而只是把编程作为兴趣的话,把 C 作为第一门语言的必要性不大。新手编程时有完成品和成就感的话会好很多, Python 更合适。
如果本身就是计算机或者软工的, C 或 C++入门完全可以。 |
51
cxbig 2015-11-20 06:51:16 +08:00
大部分语言的基础都是 C ,才大一当然要学。懂了 C 其他的都不是问题。
|
52
allan888 2015-11-20 07:03:05 +08:00 via Android
对正经的 cs 的人肯定是要学的,这个不容置疑。
比如你不懂 programming language ,那你对 js 的闭包,自由变量,对 python 对 scala 的 lambda 的匿名函数就停留在会用上,但是你并不懂原理。 如果你不懂 c ,你可以写 php 写 python 写 java 的 web 后端,那服务器怎么处理并发的, linux 进程间如何通信, |
53
MayLava 2015-11-20 07:09:45 +08:00
不一定要深入学 c ,深入的学好 java 也行。理解好 java reference 就很足够了。
|
54
allan888 2015-11-20 07:12:02 +08:00 via Android
@allan888 没说完不小心发送了,补充一下。
不同的东西用了不同的机制,比如 aio 比如 netlink ,导致不同的最大并发数和不同的效率,你不懂 c 你就只知道啊这个轮子好,那个轮子弱,跟着别人的忽悠走。 你的志向是停留在用轮子写非常上层的东西那就不用管了,这也是一条路,谈不上高低。但是你如果要做到既会用又懂原理,必要的时候能改底层来适应需求,那不会 c 就是不可能的。哪个大公司能只用很上层的别人的轮子而不涉及底层呢。你要成为万人敬仰的大神这是必经之路。 至于说国外学校教 python 不教 c 都无力吐槽,胡扯之前最好看看别人 cs 的课表。 |
55
sandideas 2015-11-20 07:56:12 +08:00
楼主是大一当然必须必须得学,而且要好好学,不是学个语法。
最好去写 ACM 的题目。就算拿不到奖,在将来的学习中你会发现你的思路十分的清楚。 反正我是能很明显的看出来有学过和没学过的区别,在面对新知识上,差距还是特别大的。 |
56
vietor 2015-11-20 08:16:56 +08:00 via Android
Python2 已经很老旧了, Python3 的分裂很麻烦。 C99 学学是值得的,看到那些其他语言吹性能,可以一笑了之。从 C++ 14 已经反人类的像极了动态语言。
|
57
mianju 2015-11-20 08:23:38 +08:00
在看 CSAPP ,发现 C 还是挺重要的
|
58
onice 2015-11-20 08:42:32 +08:00
要达到能写控制台的 XX 管理系统的水平。其实最主要的是要把数据结构与算法学好,学校里开的课一般都是以 C 语言描述的。如果没 C 基础的话,那就完蛋了
|
59
xuhaoyangx 2015-11-20 08:58:17 +08:00
@wizardforcel 十分赞同
@allan888 国外不是不教 C 语言,而是很多都会用类 python 的语言作为第一语言课进行教学。 效果往往比一开始就学 C 语言的效果更好,比如更加简单易懂帮助学生提升兴趣,和一些思想 |
60
elgoog1970 2015-11-20 09:09:27 +08:00
C 作为程序员是必须要学习的,不信就算了
|
61
harry890829 2015-11-20 09:17:12 +08:00
上次看到这个题目的时候,就想说些什么,但是又不知道说什么
我现在是一个 c/c++开发,现在负责开发呼叫中心,其中包含 Linux 服务器与 pc 客户端,全都是用 c/c++编写,只能说非常痛苦,公司最早开始使用 c/c++写客户端的时候,应该是领导不太懂把…… c/c++是一定要学的,不过就像上面各位大神说的一样,你入门开始学 c/c++你会经过一个非常非常枯燥的过程,完全在一个理论抽象的过程中思索,但是你要是学一个高层语言, java 等,这样你可以轻易的写一些自己能够看到的东西,一些小游戏等,这样可能会增加自己学下去的信息吧…… |
62
zackkson1991 2015-11-20 09:20:50 +08:00
@chevalier 这位仁兄正解。深入学习 C 是必须。还需要学习计算机系统等基本知识,还要学习一下 C++,理解 OOP 。没有学习好 C 语言,真的“半残废”。
|
63
allan888 2015-11-20 09:26:54 +08:00
@xuhaoyangx 对本科生来说第一门课怎么好使怎么来呗,后面学什么内容就自己去搞定相关的语言。
对 master 来说,从来就没有课是教语言的,需要用任何语言的话都是自己回去搞定。 但是如果楼主一定要问深入 C 有没有必要,我可以说无可奉告,但是我没见过有人能在本科或者 master 毕业还能躲开不学 C 。 |
64
gimp 2015-11-20 09:28:20 +08:00
C 是一个大门, Lisp 是另一个
直接学 python 虽然很实用,但是作为程序员, C 是一门必修课 |
65
jimrok 2015-11-20 09:32:30 +08:00
c 本身没什么可学的, c 主要是做系统编程的,例如写驱动,写 Linux 的网络服务。背后的知识在熟悉系统底层的接口和工作特性。如果这些不是你的菜,学了也就是玩玩数据结构。
|
66
Cloudee 2015-11-20 09:36:45 +08:00 via iPhone
光学 C 也不难啊,总共没几个关键字,计算符号也很标准,简单粗暴一句废话没有。难的地方要么和计算机的运作方式有关要么和数据结构和算法有关,都是学其他语言也绕不过去的
|
67
wizardforcel 2015-11-20 09:41:50 +08:00 via Android
@harry890829 c++玩好了照样能写各种看得见的项目 有轮子的话 web 那套也不成问题啊 现在的 c++标准库和三方库加起来再怎么着也够用了
@wdhwg001 不赞成 框架什么的 无论是 ui 还是 web 在学校如果不讲就没必要单独花时间研究 边用边学即可 如果老师讲了也没必要深究 会用即可 没必要为此花太多时间 |
68
g67261831 2015-11-20 09:45:06 +08:00
各种语言也只是工具,一切为工作服务,看以后做什么。
|
69
harry890829 2015-11-20 09:48:46 +08:00
@wizardforcel 你都说玩好了之后啊,初学的时候,就只能搞内存,搞指针,理解那些蛋疼的搞来搞去的东西,起初那些 shell 下,枯燥的蛋疼的东西,作为初学者,还是很辛苦的……
|
70
wizardforcel 2015-11-20 09:55:48 +08:00 via Android
@xuhaoyangx 其实国外的课程 基本上讲组成原理顺道也就把 c 讲了 说实话 c 的特性很少 并不适合单开一门课
我们学校的 c 语言课 6 个星期就把 c 语言核心部分讲完了 剩下十个星期讲 linux c 讲 opengl 。。。 指针什么的不理解 可以学组原的时候再返回来看 但如果就连这样简单的语言都不想学的话 也就不用继续学下去了 |
71
wikimore 2015-11-20 09:57:32 +08:00
个人觉得需要!
因为上层的语言基本都是用 C 来实现的,php/python/ruby/java/lua/erlang 等等等等.... 当你想深入了解其中原理的时候,都会需要和 C 打交道... |
72
wizardforcel 2015-11-20 10:03:12 +08:00 via Android
@harry890829 所以这就是大部分教材的弊病
初学的时候可以用 vector string shared_ptr 先用起来 等深入的时候再接触原生指针什么的 如果初学的时候就陷入这些东西 我估计没几个人愿意学的 有时候我在想 obj-c 也涉及到内存管理什么的 但是愿意学的人好像要多得多 到底是什么原因 |
73
mornlight 2015-11-20 10:14:08 +08:00
@wizardforcel OC 能容易地开出高工资,而且现在 OC 里有 ARC ,大多数时候不需要手动 release ,内存管理没有那么复杂。
|
74
harry890829 2015-11-20 10:25:13 +08:00
@wizardforcel 所以,要是有个好点的人带还好,否则光看书,或者大学老师那种读书式的教学,简直抹杀编程的乐趣……
|
75
wizardforcel 2015-11-20 10:27:16 +08:00 via Android
|
76
Wangxf 2015-11-20 10:55:28 +08:00
据说大牛级别的程序猿都会 corc ++
|
77
msg7086 2015-11-20 12:45:21 +08:00
@wizardforcel 为啥我记得智能指针也是个坑货?好像还要考虑引用计数什么的不知道有没有记错。
|
78
xuhaoyangx 2015-11-20 13:13:21 +08:00
@allan888 赞同。
@wizardforcel 了解。 从国外课程了解,也只是通过我高中或小学同学了解的。也只能大概了解大概的一些内容。 不讲讲了什么,最直接的一个感觉。 都是差不多时间入学的,只不过我在国内,我的同学是在加拿大,妹子完全不懂电脑的那种。 第一年,是妹子问我问题,第二年,是我问妹子问题。 妹子是那种不喜欢编程,也不讨厌代码,她跟我说过一些他们第一门程序语言是 python 的,老师做了很多有趣的功能,而且也很好理解,算法也是通过这些有趣实用的功能举例。然后我就很好奇问了一些留学的朋友,基本第一门语言都不会用 C 讲,毕竟用 C 做点东西对于初学者相当难,做不出东西对初学者很难受应该是很难受的一件事。 国内的课程很多本末倒置,课程时间也不够,国内体制是需要考核,在有限的时间内,让学生掌握需要考核的内容,导致一部分老师的确想讲的挺好的....然并卵 |
79
wizardforcel 2015-11-20 15:34:38 +08:00 via Android
|
80
loqixh 2015-11-20 15:42:41 +08:00
@xuhaoyangx 呵呵,事实是计算机相关专业国外入门基本也都是 c.............非计算机相关专业才是 python
|
81
allan888 2015-11-20 15:49:41 +08:00
@xuhaoyangx 也许缺的是带着爱去学 C 。
国内可能教 xx 就抹杀大家对 xx 的兴趣,但是这不是 C 的锅。 |
82
phoneli 2015-11-20 15:52:27 +08:00
看你定位。如果还没有定位好,就学下吧。也不难。
|
83
w3hacker 2015-11-20 15:53:41 +08:00
有必要学,还有必要学下 linux c, 帮助是巨大的
|
84
xuhaoyangx 2015-11-20 20:53:01 +08:00
@loqixh 为什么要呵呵,没有说 C 语言的不好。只是吐槽国内的教学方式 教学内容
|
85
qiuzeliang 2015-11-20 21:02:42 +08:00
过来人告诉你,必须学 c or Python !!!
|
86
hqs123 2015-11-21 07:02:32 +08:00
学会就行,学会触类旁通最重要.
|
87
jimzhong 2015-11-21 09:36:24 +08:00
如果你是计算机专业的,那么 C 是必须的,如果只是想学编程,那么可以考虑 Python 。
|
88
3yvsye 2015-11-21 09:47:25 +08:00
基友在加拿大读大学他们首门语言就是 Python , C 可以按兴趣学习对数据结构做题那些帮助挺大的。感觉 C 语言就像我们的四大名著那样,都说经典,但有耐心把它全部看完并理解它们经典的地方在哪里的人并不多,所以要看你自己的学习方向和学习深度了,怎么安排才是最关键的。
|
89
matthewz 2015-11-21 17:22:36 +08:00
肯定得学啊 至少要会基础语法能写算法和数据结构
但是不必一开始就学 |
90
joshz 2015-11-21 17:42:05 +08:00
要学的话也推荐使用[图灵社区 : 图书 : C 语言程序设计:现代方法(第 2 版)]( http://www.ituring.com.cn/book/208 )
|
91
cheng007 2015-11-23 13:35:58 +08:00
@wdhwg001 扯的太过了, MFC 能和高数比较?一套过时的框架,花那么时间去研究这些。有着时间,玩 Android 都比 MFC 好,至少不过时。想到现在学校还在教着 MFC ,真特么想吐。
大好青年的时间和精力浪费在这样的满是历史包袱的东西实在不值。 |
92
spww 2015-12-14 11:27:33 +08:00
框架天天变,计算机原理不会变,如果编程只是组合 API 那确实不用学,但是如果不想一辈子搬 api ,怎么可能不多学一些基础的经典的东西。
|