V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lizon  ›  全部回复第 5 页 / 共 6 页
回复总数  113
1  2  3  4  5  6  
2016-08-21 22:26:08 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@wizardforcel 你完整的看过我们之前的讨论内容吗?
我哪句话是在“鼓吹”底层?我基于自己的经历,建议让初学者首先接触接触 C ,对硬件实现形成基本的概念,有问题?我说过让初学者跳坑了吗?老是先上来批判一番。说实话,其他人先学什么关我屁事,有兴趣的人,自己都会去弄懂这些问题。本来就是建议向的东西,你觉得不对,你说你的方案就是了,一句一句反驳搞得我很恶心。
2016-08-19 14:34:11 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@FrankHB 在细分领域,总有比 C 更好的选择,是的。基于目的去学习相应语言,造成的时间浪费最少,是的。
如果找到方向了,大可以转投更有针对性的领域,在此之前学一学 C ,软硬都了解一下,没什么不好
2016-08-19 13:17:31 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@wizardforcel 我往坑里带了吗?没有说学 C 就一定要用上 C 。
我只是觉得应该给予初学者最大的自由。喜欢硬件就往硬件发展,喜欢软件就往软件发展。在学 C 的过程中寻找自己感兴趣的东西。说不定他就是下一个优秀的硬件工程师。
对于上层开发,我很担心初学者过早用上高级语言会养成思维定势,形成舒适区,抵触底层细节,对发展有害。
2016-08-19 12:57:51 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@wizardforcel 我之前的回答都是在强调:起手学 C ,并不是只学 C ,并不是要求精通 C 。

就计算机知识体系来说, C 是最佳的线索。我对初学者的假设是“想了解计算机体系结构,但是没有人带领”的人。在学习 C 的过程中,会碰到很多问题,一方面是语言造成的,一方面是底层封装不完善造成的,在解决问题的过程中,一方面可以接触了理论知识,一方面可以接触硬件知识,对他自己寻找方向是有好处的。一旦找到了自己的方向,那还用不用继续学 C 就是他自己的兴趣问题了。不要以为跑数据写代码就是计算机的一切,你说的“普适”的语言对于想玩硬件,从事嵌入式系统内核开发的人有意义吗?

如果你身边就有很好的学习资源,或者你已经找到了自己的方向,那随便怎么学都可以,反正方向明确有人带。
2016-08-19 11:33:10 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@bramblex 我不认为学习问题是教育问题,很多时候需要自学,交流,做实验,自己验证想法。不是每个初学者都有机会等到大牛根据人性的悉心指导,自力更生更重要。这个道理越早理解越好。
2016-08-19 11:20:03 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@muziki 嗯,了解。
我的意思是:初学者只需要把 C 语言当成一个纯粹的工具,了解底层,做实验的工具,并没有上升到语言本身的问题上,我其实也不关心 C 语言语义上的东西。作为初学者了解底层的起手工具, C 语言最合适。
带偏是难免的,任何资料都可能存在误导,遇到问题了,初学者自己要学会查问题,做实验,和别人交流,验证想法。
我希望初学者通过学习 C 语言,通过遇到问题解决问题,学到其他更有用的东西,比如“底层封装得并不完美”,“编译器并不能保证程序的正确性”,永远保持向下探究的态度,顺带还有一大票的底层知识,而不单单只是学一门程序语言的语法语义。
2016-08-19 10:49:00 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@bramblex 有的人偏向于通过别人一步一步引导,以温和的方式来进行了解;有的人偏向于尽可能多的了解细节,以自由探索的方式来了解。我个人认为后一种品质更有利于自身发展,所以希望初学者一开始就培养自己这种品质。只是方式选择的问题,不分对错,我也只是发表了自己的见解。
只谈技术,不谈人性。
2016-08-19 09:23:13 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@FrankHB 你和我对学习这件事本身有不同的理解。

你认为一开始就应该给初学者提供比较完善的语言和类型系统,让初学者知道什么是对的,什么是先进的,以最快速度学习享受到现在最先进的理论成果,更多的关注语言本身的描述能力。

我认为一开始应该提供给初学者最大的自由,暴露合适的硬件细节,让初学者明白计算机到底在做什么。

我说的奢俭,是指初学者一旦高级语言用爽了,屏蔽了本来应该了解的细节,很可能就呆在舒适区不想出来了,称他还没养成惰性,照脸糊 C 。

我不明白学 C 的低效在哪,风险在哪。面向初学者的教材几乎全是 C ,算法教材也大部分是 C 代码或者类 C 伪码,各大高校开设的计算机课程必定有 C ,已经为初学者尽可能降低了学习曲线。

初学者需要“学习 C ”,而不是“精通 C ”,不要去研究 C 语言本身的细枝末节,最主要是理解指针概念。很多初学者学 C ,从来没搞清楚过指针运作原理,就转投其他高级语言,我认为是有害的。不尝试从底层去理解语言特性,学习新语言就真的是换一种语言,重新学习新语言的语法特性,以往的经验没法融会贯通。为了逃避指针而去学高级语言的趁早转行,因为对语言的理解也就止步于语义了,隔两年,潮流变了,语言换了,才是一脸懵逼。

有底层知识的支持,很容易就能理解函数指针,回调,委托的关系;从来就没有所谓的引用传递,都是值复制;缓存一致性问题不单单出现在底层,数据库,分布式系统同样出现,在底层同样能接触“速度不够就要加缓存,有缓存就要解决缓存一致性问题”这个朴素道理;类型系统都是纸老虎,是数据就都得放到内存里算。

为什么 C 语言最合适,往上看,高级语言写法风格大都类 C ,要学习其他语言并无太大的不适应。类型系统一个语言一套,但是指针是每个计算机都有的;往下看,完全可以通过逆向 C 程序来往更底层的方向走。如果这个初学者的毕生梦想是写更好更快更稳定的嵌入式系统内核以及周边驱动开发,那起手让他学其他高级语言,了解各种类型系统有什么意义。

如果是做语言研究,连用 C 入个门都困难,或者跌入个 C 设计上的坑都要大呼小叫,我觉得可能他的能力不适合做语言研究。语言设计也是填旧坑,挖新坑,不知旧坑,怎挖新坑?设计问题是权衡问题, C 语言是个不算好但是经典的范本。

C 语言肯定不是做工程或者做语言研究最佳的入门语言。我说的是:

在不清楚这个初学者以后到底要干什么的情况下,在初学者连自己都不知道自己到底要干什么的情况下, C 是性价比最高的语言。
2016-08-19 01:41:57 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@FrankHB 在不清楚这个初学者以后到底要干什么的情况下, C 是性价比最高的语言。

用高级语言起手,会给初学者造成一种假象:底层那些复杂的弯弯绕已经被封装完美了,我们只要学会高级语言足够应付。

由俭入奢易,由奢入俭难。

殊不知高级语言那些名词会让初学者进入一个迷宫,继承,虚继承,虚表,函数指针,接口,值传递,引用传递,回调,委托,局部静态变量,协程,闭包。这些来自不同语言的概念,到底哪些本质上是一样的,或者说这种表现出来的特性,落实到 CPU 和内存上到底是怎么实现的?


作为工程派:
多线程竞争, volatile 关键字到底在影响什么, CPU cache 工作原理,以及一些以后可能会遇到的诡异 BUG ,甚至需要反汇编去搞清楚问题。如果只是疲于应付高级语言的概念,不了解底层实现,不能体会到程序编写其实就是”直接在一张白纸上写字“的感觉,那他对程序的理解也就止步于某一门语言中。 C 就是笔,最自由的一支笔,内存就是白纸,写什么,写上去的东西怎么理解,发生怎样的状态变化,产生什么行为,在 C 语言中是最直白清明的。当意识到面向对象与结构体还有函数指针关系的时候,才不会滥用设计模式。

作为学院派:
就算图灵机与λ演算是等价的,分别作为二者典型代表的 C 和 Lisp ,也明显是 C 的程序更符合初学者的思维方式,学完了这两门,其他语言都是在这两种语言之间做取舍。没有什么反面教材,一切的设计都是对解决问题的权衡,确实是有考虑不足的地方,但是不要局部不完美泛滥成整体否定。
2016-08-19 00:27:08 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
@ecloud 伪码这个东西本身是辅助理解用的,谈不上专门去学习。从入门语言角度来看,不管是语法,实用性,对底层的控制能力,经验的复用性, C 都是完胜 Pascal 的。
2016-08-18 15:40:48 +08:00
回复了 xiqingongzi 创建的主题 C 你们会向新人推荐 C++么?
新人是有多新,想达到什么目标?
科班出身:必须是 C 起手,然后根据选择的领域再换语言。
纠结性能型:必须是 C 起手,然后根据选择的领域再换语言。
语言研究型:必须是 C 起手,然后 Lisp ,然后自选。
数据处理型:首先要数学基础和建模基础, Python 起手,熟悉各种各样的库,有部分切换到 R 语言。
只当码农型:随便一个脚本语言就能用得很爽,但是职业生涯的上限也就这样,一辈子也就是把别人的想法翻译成代码。

为什么大部分必须是 C 起手?因为通过 C 语言是熟悉现代计算机系统结构的最佳语言,足够简单,抽象程度刚好,通过指针读写内存,修改 CPU 寄存器,对应图灵机的工作方式;深入 Linux 内核也必须是 C 语言。
2016-08-17 13:37:56 +08:00
回复了 yangzzu 创建的主题 程序员 公司让报 ip 和 mac 地址,估计是要安装监控
只要硬件物理所有权在公司,想监控你,你是没有办法的。你能做的,最多就是应用层的通信内容加密
把生成的随机序列可否被预测,这个选项留给使用者,因为有时候需要能重现生成的随机序列,比如:游戏战斗回放
2016-08-14 11:59:08 +08:00
回复了 zcg121314 创建的主题 程序员 求教!武汉招聘程序员工资该怎么开?
缺钱吗?
不缺钱:不缺钱还怕找不到靠谱的人?
不缺钱想省着花:
方案一:高薪请一个技术 leader ,招人的质量,项目质量上的保证,就全压在他一个人身上,同时做好他如果抽走人,整个项目就面临重大停滞的准备。
方案二:花点钱去咨询,你真要是想靠谱点,论坛上的回答你信?
缺钱:项目有点悬。
休息倒是可以,睡觉玩游戏逛帖子。发泄?觉得你不太适合这行
2016-07-28 01:34:45 +08:00
回复了 cmaster 创建的主题 程序员 国内哪个直播平台好点?
偏 ACG B 站,否 则熊猫
2016-07-25 10:54:53 +08:00
回复了 SlipStupig 创建的主题 Python 关于爬虫监控网页的一个困惑
我给你分析一下这个问题:
首先网页是否修改,你有两种方式获知,一种是网页的在修改的时候主动发出一个通知告诉你,另一种是查询网页和历史纪录比较,得知是否修改。如果你是网页的拥有者,那么在网页修改的时候加一个触发机制通知你就行;如果你不是,那么就只有老老实实轮询。
如果你的需求是必须监控每一张网页的修改,那么就需要不断改善你的爬取性能,除了挨个爬取之外别无他法。
如果并不需要,那么你可以选择性轮询,对于修改频繁的网页,你查询频率调高一些,对于修改不频繁的网页,查询频率调低一些。可以写一个函数,用于评估网页修改是否频繁,然后以此分配爬取频率,争取最大化利用你有限的爬取资源。
对于网页是否修改,这个是你自己定义,哪种程度的内容改变算“修改”,需要你自己判断
2016-07-25 10:34:37 +08:00
回复了 ZGLHHH 创建的主题 Go 编程语言 在 Go 语言中,如何 import 上一层目录的 package?
你看到的是 url ,其实是 go get 下来的包,你去你自己机器的 gopath 路径下的 src 目录下看看就知道,官方不提倡相对路径式的引用,某些情况下会造成歧义,但是既然官方提供了,说明用也没什么问题
相对路径的当路径始终是 gopath 指向的路径,你可以在不同的目录下执行这段代码,来体会一下:
dir, err := filepath.Abs("./")
if err != nil {
fmt.Println(err)
}
fmt.Println(dir)
2016-07-25 10:10:22 +08:00
回复了 gcodexman 创建的主题 程序员 码农和设计师为什么薪资差别那么大?
你不看看程序员天天写那些破代码,能找到女朋友吗
2016-07-22 15:33:13 +08:00
回复了 myyou 创建的主题 Python web 开发涉及到时间的是一律使用 utc 时间吗?
1  2  3  4  5  6  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5717 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 03:50 · PVG 11:50 · LAX 20:50 · JFK 23:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.