程序员开发windows linux,好程序员不用windows作开发环境

好程序员不用windows作为开发环境,今天我想就这个点吐槽一下。最近因为工作关系,需要在windows机器上工作一段时间,作为一个用了多年windows,然后切换到ubuntu作为工作环境两年时间,然后切换到mac大概3年多时间只到最近被迫用回windows的程序员,我大概有自己的一些感触。当然,如果你碰巧用了微软的技术栈,或者在开发windows平台应用或者是windows phone应用,很遗憾,你没什么太多选择。如今我写的程序主要是web居多,移动的以iOS为主,辅以一些小工具或者库,了解我的这个背景后,大概会觉得我不那么偏激一些。

好程序员首先追求效率,这一点体现在方方面面。他们不会过度依赖于IDE,而会大量使用命令行工具。他们希望一切都尽可能地快,不光程序运行要快,开发过程也要流畅、没有阻碍和干扰,无聊重复的工作希望能够通过工具自动完成。

举个我每天都要用的terminal来说,如果你在mac或者linux上学习掌握了bash以及一些核心的GNU linux工具箱的用法,那么在所有linux平台和mac平台上都可以很高效,并且切换无成本。现在的shell多数都用了readline这个库,也就是说它们支持类似的一套快捷键,例如Ctrl+a回到一行开头,Ctrl+e到一行结尾,Ctrl+r可以匹配查找历史命令,等等。而直到Windows 8,系统自带的terminal工具cmd还和windows 95里的cmd没什么区别,好像微软从来没期望windows上的程序员去使用命令行工具(你们用visual studio就够了)。不要说快捷键,连进行最基本的copy paste都是一个非常痛苦的事情,更不要提在中文windows下你只能选择一种系统默认字体,窗口的大小不能简单拖拽进行调整…… 我确实看到很多windows上开发的程序员都不怎么用命令行工具,他们默认遵循了windows的设计哲学,那就是一切都通过GUI(图形界面)来完成。

前面提到linux下的GNU工具箱,如果你用过grep、find等工具应该不会陌生,现在除了这些传统工具,还有ack、autojump等新的工具,对于程序员来说十分顺手。在mac下,通过brew或者port,也可以很容易通过命令行工具从远程软件库安装这些工具。而在windows下面,准备好这样一套环境必须得费一番功夫。当然你可以选择cygwin,或者一些较小的linux工具移植(例如mingw utils, GnuWin32等),现在也有nuget和chocolatey这样的软件安装和版本管理工具(类似linux下的apt-get或者mac下的brew),但是仍不是非常理想,不同工具的安装体验也非常不同,而它们对linux的模仿也刚好印证了linux类系统的先进。

最近我也发现了好几个windows上cmd工具的替代,例如powershell,有它自己的优势,还有类似powercmd,powertab,console2等工具,也是希望能够给windows带来更多类似linux和mac上terminal类工具的功能。

除了terminal本身,shell script也比win上的batch script强太多了,powershell的出现让windows也具备了较强的脚本能力,然而shell脚本的强大和广泛应用还是powershell不能比的。在linux上,init和系统配置大多是shell脚本,不论是用bash、ruby还是python写出来的脚本,使用起来和用C语言写成的sed、awk等工具没有什么区别,作为用户,这些脚本的使用体验就和原生工具一样,我们熟悉的vagrant、chef、hg等工具都是脚本写的。而windows上,bat脚本的能力有限不说,其执行体验也差了很多。

不仅是工具,在执行效率上linux也比windows强很多。

我们现在开发很多web应用,很少有部署在windows平台上的,如果你是采用pythong、ruby或者java等语言来开发web,多数情况下你会部署到linux平台上。为什么,因为linux平台执行效率高,而且作为老牌服务器平台,有很多免费的优秀开源服务器软件。这样,我们很多程序员往往在windows上写java代码,在linux上部署war包。

可能有人会问,linux作为服务器效率固然不错,作为开发环境也许差点。我目睹过一个团队从windows切换到linux开发环境后,构建脚本的执行时间从十几分钟缩短到了7分钟左右。linux的文件系统比windows要快,很多脚本解析器的实现也更高效,因此解释执行的效率也更高。

除了效率,我也关注体验。

在mac上,所有程序的界面风格都是一样的,任何一个工具和应用,你都可以用同样的快捷键来进行基本操作,而在windows上,大多数的程序交互风格都不一样;linux和mac上所有命令行工具都是差不多的参数语法,而windows上的命令各有各的参数风格;linux和mac上所有命令行工具都有man文档,而windows上大部分工具都没有合适的文档;在大多数linux平台上,ruby、python、java已经默认安装了,而在windows上,光安装ruby+rails就有一个专门的团队来为其制作安装包了。

在linux和mac上,我在命令行里基本上可以完成所有任务;在windows上,如果我要ssh服务器,我要打开putty,如果我要启动mysql,我得找到mysql工具的快捷方式,启停服务我要到service管理窗口,加个环境变量我得鼠标左右键点击n多次到一个尺寸不能调整的小窗口里手动添加,完了我还得不得不重启cmd窗口。

在linux和mac上,现在很容易可以写一个脚本,把一个开发环境所需要的所有内容都自动化安装执行好,我们不需要一个文档来记载每一个新来的程序员所需要做的安装准备工作。在windows上,我也用powershell写过类似的东西,开发和维护这套脚本的体验都不太好。

我承认习惯是一个很强大的力量,毕竟当初我从win xp切换到ubuntu的时候,也是花了好一阵才能适应。现在之所以我这么抱怨windows,也可能是我在mac下活的久了的缘故。加之现在的IDE例如intellij和Visual Studio已经把java和.Net开发支持的很不错了。但是如果你的工作不只是在开发机上写写代码,你应该能够体会我前面说的那些差异。且不说windows平台作为web应用的部署平台早已没有任何竞争力,在我看来,作为开发环境,也已没有任何吸引力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

else应输入一个语句是什么意思_Python基础知识储备,关于if-else使用性能的一点感悟...

前面给大家介绍的if-if分支结构是只要条件满足就会执行;而if-else的语句结构是前面的条件成立执行什么操作,则下面的分支结构就不会被执行,若前面的条件不成立(否则)做什么。以下通过三个案例给大家演示if-else语句的使用方法:Pyt…

你应该拥有的无名剑

想了很久的名字,刹那间我不知道怎么给文章起名字了,一个响亮的名字远比正文来得精彩,既然题目比文章精彩,那么就会喧宾夺主,所以我们看很多古诗词的名字起名《无题》,也可以理解为某个时段,肚子…

你真的知道敏捷和迭代吗?

在这敏捷开发横行的时代中,人人都在谈敏捷,人人都在谈迭代,似乎大家好像都尝到了敏捷带来的甜头,记得有一次跟朋友吃饭,说他们现在的项目用敏捷开发,每个迭代都能看到不断完善的产品,非常有成就…

n1运行linux,斐讯N1折腾记:运行 Linux 及优化

此教程同样适用于斐讯 P1咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了官改系统,可以当作一个电视盒子和下载机来使用。有些小伙伴可能不想把它当作电视盒子,就想把它当作 NAS 或者是服务器,但是总不能拿 Android 玩吧&#xff0c…

谈优势成长

以下文章来自我的一个同事,希望他的感悟能够帮助到一些人,大家共勉~工作忙碌的时候总是不能抽中空闲来读书,利用上周坐飞机的2个小时时间,不能看手机,不刷微信,我一口气读了一本好书《优势成长》。这不是一…

@cacheable 设置过期时间_缓存面试三连击——聊聊Redis过期策略?内存淘汰机制?再手写一个LRU 吧!...

大家好,今天我和大家想聊一聊有关redis的过期策略的话题。听到这里你也许会觉得:“我去,我只是个日常搬砖的,这种偏底层的知识点,我需要care吗?”话虽如此,但是兄die,如果你连标题上问题都不知道…

linux终端贪吃蛇,分享|nSnake: 在Linux的终端上玩经典的贪食蛇游戏

你知道20世纪末的那些古老的诺基亚手机上最棒的东西是什么吗? 贪食蛇! 我以前在这个看似无聊但却让人上瘾的游戏上花费了大把的时间。在古老的诺基亚手机被智能手机取代的同时,贪食蛇也被另外的无聊但却令人上瘾的游戏取代了,比如说&#xff…

vue 组件之间数据传递(七)

1、props:父组件 -->传值到子组件 app.vue是父组件 ,其它组件是子组件,把父组件值传递给子组件需要使用 >props 在父组件(App.vue)定义一个属性(变量)sexVal 男 把该值传递给 子组件(B.vue)&#x…

人在旅途之桂林

先说下这篇文章是多图的所以看文章的同学最好在wifi环境下之前有发文章说我们学院建院十周年所以,哈哈哈,就有机会回桂林嗨皮了出发的时候车子没电了,叫了保险过来搭电搞了一段时间,不过不影响我们顺利到达桂林第一时间先吃碗米粉…

python pyecharts 折线图_python数据大屏pyecharts库2020.8.31

数据大屏V0.1-2020.8.31前言千辛万苦,找到了python能实现数据大屏库pyecharts。1、https://gallery.pyecharts.org/#/Page/page_simple_layout2、主要是3个类,Grid:并行多图,Page:顺序多图,Tab:…

linux文件管理器添加项目,LXQt 0.14 发布,文件管理器添加拆分视图

LXQt团队已经发布了他们的轻量级Qt5支持的Linux桌面环境的0.14.0版本。LXQt 0.14为PCManFM-Qt文件管理器添加了一个拆分视图,其桌面图标角色现在支持计算机/网络/垃圾箱图标,通过libfm-qt改进更有效地处理挂载,LXImage-Qt现在可以处理图像EXI…

计算机基础系列一:计算机硬件

一.计算机硬件/操作系统/软件/网络1.1软件的最终目的是控制硬件 1.2程序就是写的代码 就是为了更好的控制硬件 但是需要先控制 CPU 硬盘等硬件1.3学习python语言的目的是为了写软件 python的单词就是关键词 模仿就是多练习熟练度1.4 cpu主要关键功能就是…

这两天,我们还没毕业

这两天在桂林,见了很多几年没见面的同学,从毕业后到现在,应该是人数最多的一次聚会了,如果用两个字来形容这次聚会,那应该是 「满足」两字。满足于多年没有见面的老同学,从天南聊到地北,从球场聊…

python parser count_8个超实用的Python脚本,收藏备用

脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作。例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。完成这…

linux强制使用windows命名,如何强制Windows重命名带有特殊字符的文件?

在Windows 7中:在管理员模式下运行cmd.exe。cd进入带有文件名的目录。运行:chkdsk / V / f [我的错误文件在OS驱动器之外的其他驱动器上,因此它可以卸除它。如果是OS驱动器,则可能必须在启动时执行此步骤。等待(可能必须重新启动)…

2.Cannot find config.m4.

PHP扩展路径在:PHP源码包下的ext目录下;这个目录下有很多自带的扩展源码,缺少什么扩展只需要进入这个扩展目录下,再运行Phpize即可;转载于:https://www.cnblogs.com/52-hz/p/7155348.html

LCD 设备驱动框架分析及核心结构

Linux 下很多东西都是和结构体相关,举个例子,时钟大家都知道吧,Linux 下对应时钟的东西就有好几个结构体,所以你要是想明白Linux 下那些东西,对结构体要有所了解,LCD 是基础的驱动设备,里面涉及…

kafka 启动_Kafka管理工具Kafka Manager

Kafka作为分布式消息系统以其轻量级、可扩展、高通吐等特点而得到广泛应用,最近在项目中用Kafka作为中间件进行数据交互。为了监控Kafka的运行情况,在网上找了个开源的Kafka监控工具Kafka-manager对Kafka集群监控。为什么选用Kafka-manager而不是KafkaOf…

linux 简单脚本fi报错,shell脚本报错:[: =: unary operator expected

shell脚本报错:"[: : unary operator expected"在匹配字符串相等时,我用了类似这样的语句:if [ $STATUS "OK" ]; thenecho "OK"fi在运行时出现了 [: : unary operator expected 的错误,就一直找不…

Linux背后的思想

01Linus TorvaldsLinus Torvalds两次改变了技术,第一次是Linux内核,它帮助互联网的发展;第二次是Git,全球开发者使用的源代码管理系统。在一次TED的采访中,Torvalds以极其开放的态度讨论了他独特的工作方式和性格特点。…