免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: arron刘
打印 上一主题 下一主题

[学习分享] 【话题讨论】深入理解程序设计:使用Linux汇编语言(获奖名单已公布-2014-2-17) [复制链接]

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
41 [报告]
发表于 2014-01-17 10:34 |只看该作者

1、你日常工作中使用的是那种编程语言?
C/Python

2、你认为程序员与编程语言之间的关系是什么样的?
个人来讲,用合适的编程语言就行了,使用语言的本身目的就是为了完成代码产品。
但从团队来讲, 就需要一个妥协,要考虑到产品的延续性,语言选不好,很可能在后续版本里大量的代码重写。

3、编程语言真的是功能越强自由越少吗?
要看功能强,是怎么定义的了,比如python一行代码启动httpserver算不算功能强? 或者说汇编一行来控制cpu register才算强?
功能强可以这么理解,从更大的方向,语言将更加灵活地完成大计算任务, 而更细微处, 更多的计算集被扩展。

更强的功能,意味着更多更抽象的api,更复杂的控制条件。这一点上讲,我认为自由是少的。

当然比如java和jre平台,本身就很强大,但像scala等语言在java平台上的扩展,更有利于并行计算,但语法更加自由了,既包容java语法,又可以用新的函数式语法, 这个情况下是自由了一些。 当然不可忽视,这种扩展本身就不是light-weighted, 对程序员来讲,需要更多的知识储备。


4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
我认为os和底层的汇编/c是必要的, 可以更多地理解linux的源代码, 哪怕是某个子模块也是需要这些的。
对于os原理的理解,有助于理解linux的运行状态。 像做运维,也需要了解文件系统是怎么跑的, httpserver是怎么样做的deamon/
此外,还需要一些文档功底, linux不像windows那样 出问题的解决方式往往需要网络和不同的文档,这就需要尽快找到有用文档的能力。

-s


论坛徽章:
0
42 [报告]
发表于 2014-01-17 10:36 |只看该作者
本帖最后由 sdau 于 2014-01-17 10:44 编辑

1、你日常工作中使用的是那种编程语言?
Python、shell、c、汇编 (按使用频繁度排序)
最近因为研究shellcode的关系,写过汇编的一些代码,  感觉AT&T语法比Intel语法更易懂

2、你认为程序员与编程语言之间的关系是什么样的?
用句比较老套的话,编程语言只是个工具,好的程序员会在不同的场合使用不同的工具;
顶级的程序员当然也会发现编程语言的劣势,进而发明自己的语言,比如go

3、编程语言真的是功能越强自由越少吗?
仔细想想,有一定道理,汇编应该是无所不能吧,但是很少有人用汇编写上层应用吧。每种语言都有自己的擅长领域,C语言可谓强大,但是汇编比C更容易与机器交互;python可谓简单易用,但是毕竟是解释性语言,调用特别频繁的代码要用C写成模块,这一点跟PHP、Perl有相似之处;

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
个人感觉,要想在某一领域擅长,必须要了解这一领域的底层领域,比如以前学socket编程,总是有种漂在空中的感觉,后来看了linux内核中的网络部分,才豁然开朗,所以觉得要想成为一名合格的linux系统工程师,必须要了解如下:
(1) 网络 : 这是个互联网的社会,大多数系统都不是一台机器单机作战,怎样将这些机器协调工作,怎样做系统防护,都需要对网络有相当的了解;还有网络不想编程语言那样,今天兴java,明天兴python,后天有兴go,网络知识相对来说是固定的,变化不会特别大,经验特别重要。
(2) 内核:我只涉及过linux内核,每个系统程序员都会碰到各种各样奇怪的问题,如果对系统底层不了解,就不能从更本上解决问题。

论坛徽章:
0
43 [报告]
发表于 2014-01-17 12:34 |只看该作者
1、你日常工作中使用的是那种编程语言?
Answer: 主要用C,Python,当然Shell编程比不可少

2、你认为程序员与编程语言之间的关系是什么样的?
Answer:程序员是编程语言的学习、使用者,同时也是编程语言边界的丰富者,也是程序语言其自身属性的传播者;编程语言是程序员设计意志的载体,也是程序员思维活动通过机器展现的中间媒介。

3、编程语言真的是功能越强自由越少吗?
Answer:这个问题首先要厘清所谓的自由将具体体现于何处和将如何体现。举例来说,对于特定的问题,会有特定的设计、应用需求的限制。这时编程语言的适用属性将会影响程序员对于编程语言的选择自由。在实现时,当然也会影响到程序员的时间自由,功能越丰富,时间效率会越高,程序员在时间支配上也会更自由。所以功能越强越自由这个命题的限定,并不具备一般意义。

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
Answer:这句话要我怎样理解呢?如果提问的主旨是“一个合格的Linux(系统工程师)”,那需要的学问太多了,随便想想,Linux系统架构,系统调试,硬件相关等等吧;如果主旨是“一个Linux系统下的软件工程师”,那可能需要了解到编译、调试、运行时库、Soket编程、基本编程语言、软件设计思想等。

论坛徽章:
0
44 [报告]
发表于 2014-01-17 12:47 |只看该作者
回复 1# arron刘


1、你日常工作中使用的是那种编程语言?
一般使用C语言,但也会经常接触汇编语言与C++。

2、你认为程序员与编程语言之间的关系是什么样的?
编程语言就是一种工具,程序员不应该被限制到某种语言上。事实上,不同的工作需要使用不同的语言,程序员所要做的是选择合适的语言。
入门级程序员只需要尽快找到一门编程语言开始学习,然后开始深入学习。
初级程序员则需要研究几种主流语言,最好还是几种差异较大的语言,如汇编、C、java。互相印证才能更好地理解。
中级程序员则则要开始脱离编程语言的限制了。应该是更多的专注于软件设计理念与工程实践方面。这个有点类似于学习骑自行车,刚开始只是专注于如何能骑,骑一段时间后其实就已经意识不到骑车与步行的区别了。这只是一种工具。
高级程序员...... 境界有点高,待高人指点。


3、编程语言真的是功能越强自由越少吗?
这个不一定。功能有两类,一类是为了规范使用者的使用习惯,可以称之为限制类功能;另一类是为了能够支持新的特性,这个反而会增加自由度。

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
作为linux入门级选手,只能提些简单的想法:
1)linux架构:首先要从2万米高空俯瞰整个linux;
2)熟悉操作系统原理
2)熟悉python、perl
3)熟悉shell编程
4)熟悉linux API
5)linux网络编程
6)有实际的linux项目经验,越丰富越好

论坛徽章:
0
45 [报告]
发表于 2014-01-17 12:52 |只看该作者
回复 6# shang2010


    单纯做汇编的行业很少,但能接触到汇编的还是很多的

论坛徽章:
1
摩羯座
日期:2013-11-29 18:02:31
46 [报告]
发表于 2014-01-17 14:35 |只看该作者
1、你日常工作中使用的是那种编程语言?
C/C++,Perl, Python,VBA
使用C进行单片机程序开发,C++进行上位机模块,用Perl和Python及VBA进行一些辅助性的工作,如字符串提取,文件处理,代码自动生成


2、你认为程序员与编程语言之间的关系是什么样的?
程序员和编程语言间是想法与实现的关系,程序员所主宰的是想法,是思路,选择不同的语言只是实现的方式不同,复杂度不同,实现思路不同,本质上没有区别。

3、编程语言真的是功能越强自由越少吗?
一定程序上,编程语言的和自由度间有着反比关系。语言的强大,其实也就是说程序员要做的事情少。仔细想想,实现一个想法或思路,其所具备的复杂度是一定的,语言的强大表示语言的复杂度比较强,那么留给程序员发挥的空间就少了。比如,对比C和C++,用new显然要比malloc简单的多,malloc还要检查是否分配成功,而new只管用就行了。实现不行加个异常捕捉。


4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
A:CPU硬件知识是必须的,它是软件的基础,是程序员的基本修养,不懂硬件者不懂软件
B:OS知识,OS可以认为软件中复杂度最高的,懂得了OS并深入理解其基本原理,对于系统架构来说算是入门了
C:必须精通至少一门语言,以C/C++或Java,至少一门脚本语言,
D:必须深入了解编译器对语言的实现方式,可以说,编译器实现方式的学习是学习语言的必不可少的一部分,比如对于C++多态的实现,VC和Gcc都使用了虚表,但是虚表的位置则不同,VC放在对象开始,而Gcc放在对象结尾。

论坛徽章:
0
47 [报告]
发表于 2014-01-17 14:48 |只看该作者

1、你日常工作中使用的是那种编程语言?
主要是C

2、你认为程序员与编程语言之间的关系是什么样的?
专业精通一种语言

3、编程语言真的是功能越强自由吗?
不是

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
了解操作系统和精通编程预研


   

论坛徽章:
0
48 [报告]
发表于 2014-01-17 15:43 |只看该作者
1、你日常工作中使用的是那种编程语言?
Linux C/C++语言
2、你认为程序员与编程语言之间的关系是什么样的?
程序员好比柴夫,编程语言就是砍刀、斧头、扁担、绳子等,最终目标就是打柴回家。
3、编程语言真的是功能越强自由越少吗?
编程语言除了有其自身的特定用途和专攻方向之外,功能是否强大决定了程序员能否站在巨人的肩膀上,其实是为了给程序员快捷而稳定的实现途径,而编程自由度的大小是灵活性的体现,也是程序员思维的宽广度和延展性决定的。如果一定要将这两个方面对立起来,那对程序员的要求将会更高。
4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
Linux相对于Windows基于API的思想来说,是基于文件的处理方式。同样的,基础知识是不可缺少的,如系统架构、存储原理、网络原理等,至于一些应用级的使用需要在实际工作中不断的尝试、总结。毕竟Linux和Solaris、HPUX、IBMUNIX在相同的应用功能上有不同但近似的应用方式和接口。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
49 [报告]
发表于 2014-01-17 16:55 |只看该作者
1、你日常工作中使用的是那种编程语言?
JAVA,PHP,Shell

2、你认为程序员与编程语言之间的关系是什么样的?
程序员选择编程语言,就像找对象、谈恋爱,还没有确定结婚的时候,你可以看各种各样的姑娘/小伙。但是,一旦看中了哪个姑娘/小伙,要和她/他过一辈子,就要定下心来,好好和她/他过日子。当然咯,结了婚,也还可能你又遇到了心仪的另一个她/他,怎么办呢?你可以研究,但是,要你放弃原来的伴侣,是不是也是很痛苦的过程呢。

3、编程语言真的是功能越强自由越少吗?
这个说法,不敢认同。可能楼主的意思是,语言提供的功能越多,限制越多吧。可是,现代的编程语言,基本上最初都是只提供了一个核心,拿PHP来说,它的功能够多,但是是要感谢那些奉献了各种库的作者们。就连C/C++,Java,Python也不过如此。汇编语言也是这样吧。但是,没有感觉降低了使用者的自由度。你既可以自己从头写一个别人已经实现过的功能,也可以直接拿来就用。
要是说自由少,是不是编程时,受到的限制比较多? 这个限制的含义,也就是那些语言本身就没有提供的能力吧。那恐怕是这个语言的缺点了。

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
英语最重要,懂一点计算机原理,网络原理,通信知识。然后是有效地使用google搜索的知识,总结经验教训的能力。
几乎所有最新的Linux发行版都是以英语开始的。最活跃的Linux论坛也是用英语交流的。至少,代码和命令还都是用英语表达的。所以英语最重要。
懂一点计算机原理和网络原理,有助于解决工作中遇到的问题。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
50 [报告]
发表于 2014-01-17 18:20 |只看该作者
1、你日常工作中使用的是那种编程语言?
C为主,shell为辅

2、你认为程序员与编程语言之间的关系是什么样的?
程序员说的是人话,编程语言是人和计算机对话的语言
就像是中国人和外国人说话一样,中国人说的是中文,外国人说得是外语,如果中国人想跟外国人沟通,就要说外语,或者相对来说,外国人想和中国人说话,就要会说中文,不论如何,两者之间必须有一个能懂另一个人说的是什么,或者说对方懂的语言,由于计算机不会主动去学习人类语言,所以,人就要去学计算机语言跟计算机交流。
为什么要学计算机语言,好多人说没必要学计算机语言,会用软件就可以了;有道理,但是说这句话是因为没有考虑到其实用软件的时候,该软件就相当于我们的翻译了,因为界面对我们来说是可以看到的,我们能够理解的,是程序员教计算机跟我们沟通,所以我们省了些事而已
有一句话说得挺好的,其实我们写代码,主要还是让别人能够明白我们在做什么,计算机去运行,只是一个辅助的功能而已
也就是说,没有计算机我们同样可以做到该工作,只不过计算机比我们执行的更快速一些而已

3、编程语言真的是功能越强自由越少吗?
看情况,容错越强,自由越少,容错越差,自由越强
因为为了容错,所以条条框框就强行的规范了,为了自由,条条框框就没有了

4、你认为成为一个合格的linux系统工程师,至少需要具备哪些方面的知识?
合格的Linux不同的人定义的不一样,至少我觉得技术无贵贱,门槛有高低,合格的Linux工程师不是考了个RHCE或者RCE之类的就可以了
而是遇到问题,能够自己独立的去解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP