‘壹’ 程序员为什么要用 linux 环境编程,用 Windows 不可以吗
作者:pansz
链接:https://www.hu.com/question/32238553/answer/55632559
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
开发什么软件就用什么系统,开发linux软件用linux当然比windows方便,更多人使用linux只因为更多人需要开发运行在linux上的软件(android也是linux)。linux搭开发环境比windows方便太多倍了。服务器开发有很多依赖在linux下一个apt-get能搞定在windows下能累死你。编译android源代码,做ndk应用,用linux用方便很多。linux下所有编码缺省都utf8,而windows就存在gbk码,utf8码,utf16/ucs2le之间转换的问题。 以上的问题你要说在windows下有没有办法,也不是没有办法,但都更折腾。所以选择linux无非是为了一个简单的原因:不折腾,少折腾。咱们办公室坚持用windows的都是折腾党。他们费九牛二虎之力让windows开发环境一样能用的时候,却总会发现程序在windows下开发调试存在这样那样的问题。鉴于我们的程序最终一定是在Linux下运行的,折腾windows下的环境并无意义。我个人是经常在自己的模块加宏定义“该功能不支持windows平台”,以避免造成不必要的麻烦。所以其实,你需要什么开发环境,取决于你的程序在什么环境上跑。开发苹果软件,用苹果最好了,开发linux/android/服务器软件,用linux最好了,开发windows/wp应用,用windows最好了!~~因为这所谓最好的方式,其实都是最不折腾的方式。
‘贰’ Linux汇编指令实现高效率编程linux汇编指令
Linux汇编指令(Assembly language)通常也称为“低级语言”,是一种最直接操作系统访问机器代码的方式,是非常灵活而强大的高级编程技术。使用Linux汇编指令能够让程序员最大化地控制CPU和访问系统资源, 这种能力大大提高了程序开发和修改硬件驱动程序的效率。
Linux汇编指令经常用于实现高效率的编程,可以使程序员操作机器代码,让程序运行的更快,占用的资源更少。 例如,程序开发人员可以使用Linux汇编指令,快速实现程序内存访问和不同指令的条件分支处理。 另外,汇编指令也可以创建程序的可重复使用的函数,以减少重复编码工作量。
此外,使用Linux汇编指令,可以提高I/O(输入/输出)性能,还可以实现快速算法计算、改善程序响应时间,以及减少电量和计算时间等。 例如,使用Linux汇编指令,程序员可以快速实现循环运算,使用多层循环更节省开发时间,也更能有效地利用CPU资源。
示例代码:
MOV AX, Data ; 将Data寄存器加载到AX中
ADD AX, 2 ; 将AX当前值加2
MOV Data, AX ; 将AX当前值保存到Data中
上述汇编指令是另一个编程形式,它可以更快地实现数据处理和重新组合,节省开发时间,并提高了效率。
总之,Linux汇编指令是一种新型高级编程技术,可以让程序员最大化控制CPU和访问系统资源, 让程序开发,特别是硬件驱动程序的修改,变得更加有效率, 更加充分地发挥硬件的性能,进而促进Linux系统的发展。
‘叁’ 为什么程序员要会linux
1.开源
这个我想不用解释。
2.多用户、多任务、多线程
Linux系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保证各用户之间互不干扰,就像手机开了助手一样,同时登陆多个qq账号,当硬件配置非常高时,每个用户还可以同时执行多个任务、多个线程同时工作、提高效率,简直是完美的一塌糊涂,单凭多用户而言就完爆其他操作系统。
3.稳定性和高效性
你也许会听到Windows服务器长时间运行而突然宕机,但你绝不会听到Linux系统服务器因为长时间不关机会卡死,在Linux上几乎是不会出现这种情况的。Linux服务器可以无休止的运行下去不宕机,因为它继承了Unix卓越的稳定性和高效性。正因为它的稳定才获得了众多用户的青睐,因为它的高效,它的使用范围更加广阔,然而Linux还可以提供一些高可靠性的服务,比如:LNMP、虚拟化、数据库服务等等。
4.安全性和SELinux
其安全性相比其他系统也要安全很多,由于Linux拥有相当庞大的用户和开源社区支持,因此能很快发现系统漏洞,并迅速发布安全补丁及时更新,同时还具有很强的“免疫力”特点,很少受到病毒攻击,对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。
不过,利用Linux自带防火墙(iptables,firewalld)、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘,同时还有安全增强机制SElinux,在linux内核中提供强制访问控制,功能非常全面,能够很好保护系统和服务,不过很多人喜欢把它关闭,这相对安全性就不是很好了。
还有Tcp_wrappers也能够提供很好的网络服务访问控制,Linux系统对于用户和文件管理权限的管理也是相当出色的,能够很好的控制权限,保证文件的机密性,也是其他系统无法比拟,所以Linux系统在一定程度上是坚不可摧的。
5.性能优势
由于Linux要保证其稳定性,所以并没有像其它操作系统一样内核如此臃肿庞大、漏洞百出,随着Linux内核的不断更新,不断提升着优势,Linux操作系统能把服务器的硬件优势体现的淋漓尽致,因为Linux系统吸取了Unix系统近1/4世纪发展的经验,最主要的是Linux开放源代码,保证系统稳定性,更好的调用硬件功能,同时还提供了丰富的系统资源工具top,freee,df,vmstat,dmesg,iostat,sar,uptime等,方便查看资源的利用率。
以上这些足够让你投向Linux的怀抱了。
当然,除了这些,还有一些说不定道不明的定西,比如:
biggerthanbigger
把你的Linux系统拿出去,开始用命令行做点事情。
比如说,输入sudorm-rf/*
‘肆’ 为什么很多程序员喜欢在linux系统中编程
因为在 Linux 系统中可以很轻易地定制你的环境,修改各种系统配置。写 .profile 加载你的环境。配置你的 shell。任意修改 Node, python 版本。
这些都对程序员是很大的方便。当然,前提是你对你的 Linux 系统了如指掌。
‘伍’ 学linux能干什么,有什么前景,是程序员必须掌握的基础吗
LINUX免费,并开放源码.真正资源共享,并且好多大公司的服务器都是LINUX操作系统的,它不容易被攻击下,并在LINUX下编程很有发展前途;
能进一步加深对操作系统中概念和实现的理解,对底层的深入理解,能打下扎实的基础。一些新技术其实都是架构在基础的东西之上的。基础牢固,以后再学习什么新技术都会水到渠成。
有人可能会反驳,说学习底层的东西没用,优秀的程序员应该专注于设计,项目管理或架构等上层的知识,我的观点是,设计、项目管理或架构等上层的知识和底层的知识一点都不冲突,不懂底层的人,基础不扎实,在上层也不会走的顺畅,设想一下,如果没有深厚的基础知识,你怎么能知道自己架构出来的东西能不能实现呢?Linux的前景,可以到一些专业的Linux技能培训机构(比如 重庆思庄)问一下,也会得出一个大概的情况;
‘陆’ Linux 对程序员来说是必要的么它相较于 Windows 有哪些优点
从编程角度看,linux是个平台,windows也是个平台,无非就是个工具而已,对于程序员来说,代码逻辑,编程思路是不变的,在那个平台上写代码,根据实际需要而已。
从应用角度看,linux是开源的,工业界大部分的server开发都基于linux,因此,想做server开发的程序员选择linux是合适不过。
它相较于windows又有哪些优点
1、Linux可以看到内核源代码,windows看不到内核源代码
这一优势可以让特殊应用的场合可以自行剪裁和定制所需的内核模块,这对于高级系统内核管理优化和驱动程序的开发相当有利,另外也因为代码可见,不用担心恶意功能或者后门,对于军政企等保密行业使用比较有利。外在系统出现严重问题的时候,可以自行修改代码或者接个几k的patch就能编译然后使用,而windows你得等微软的补丁。
2、Linux是基于网络的,诞生于网络
远程连接上SSH,你就可以轻松操控远在千里之外的Linux服务器,只要有相应的权限,几乎和坐在物理机面前没有区别,哪怕网速很糟糕,实际只是一些加密的字符在传送,需要的带宽很小,用起来非常的方便。
3、编程或者系统管理工具定制化
linux的使用者或许有过这样的感受,当使用别人linux,总觉得那么有点不适应,无论从vim或者其他工具,要折腾半天才能熟悉,都有自己独特的个性。
4、命令行对于管理工具或者编程,高效
在linux中使用命令行或者脚本来代替windows下的点击,可以大大提升开发效率和管理效率。只要命令行够熟悉!可以玩的很嗨!