与Mac
与Mac os兼容的编程软件都有什么?
os兼容的编程软件都有什么?
Mac OS毫无疑问,基本上是在工作、生活寻求到了一个最佳平衡点的操作系统,当然相较来说Windows也是能很好的完成这些职能,尤其是在娱乐方面和某些生产方面Windows甚至做得更好。但是今天笔者要说的是对于程序员来说,Mac OS也许是寻求工作、生活平衡的最佳节点,也就是说在完成工作的同时,Mac也能很好的兼顾到日常生活。当然还是那句话,如果你是.net开发工程师或者
这里先说一下Mac OS的系统特点,Mac OS是基于Unix的FreeBSD分支而建立起来的图形界面操作系统,曾经有个有趣的故事,比尔盖茨最先赌的是面向对象编程,所以微软成就了visual studio这一银河系最强的IDE集成开发环境,乔布斯率先看到了图形界面的未来,所以Mac OS成了最早的商业领域图形界面系统。
对于相信大家都有一个直观的感受,就是极客标签,生产力的象征。所以苹果官网也一直强调,Mac OS基于坚如磐石的Unix并且,Mac OS已经是被认可的独立Unix分支,它的设计哲学和Unix一脉相承,和Linux也是情同兄弟。所以你会有一套几乎几乎完全相同的解决方案,那么这里就盘点一下Mac OS下常用的编程软件。
1、首先是不得不说的Emacs/Vim
对于*nix哲学下的编程开发软件,毫无疑问都没法回避这两款软件,Emacs和Vim毫无疑问是全世界最强大的两个文本编辑器。这里笔者并不想说Emacs和Vim到底哪个更好这种会引起江湖不同门派骂战的话题,笔者倾向性并不会特别明显,这一点从笔者的头像也看得出来,笔者只能说,只要你用的顺手,那就是最好的工具。
但是笔者要说明一点的是,这两款神奇的工具,虽然vim号称编辑器之神,Emacs号称神之编辑器,但是看这个学习曲线图也知道,这两款工具入门门槛比较高,长期学习成本也并不会很低,笔者这么多年用下来,也只能说是掌握了皮毛而已。但是当年熟练掌握了以后,当然这个数量掌握不仅仅是怎么退出、快捷切换光标位置这些简单的操作,你得学会自己去配置,两大神器有很多的插件,可以极大的丰富你的编辑器。
其实笔者现在用这两个工具主要已经是用来写写平时的算法小程序了,毕竟编辑器这种工具,个人学习研究是可以的,但是对于大型企业级项目,需要很多人协作,集成开发环境才是最佳选择。
2、现代编辑器atom/visual studio code
当然类似于sublime text也是非常经典的文本编辑器,还有类似于具有强大列操作的UltraEdit等等,都是非常经典的编辑器,但是笔者今天要说的atom和visual studio code这两款编辑器,是因为这两款编辑器具有非常漂亮的UI界面,同时也具有强大的插件集,良好全面的语言和开发框架支持。
两款代码编辑器都是跨平台的,都是基于electronic这个框架,至于这个框架我想大家都应该有所了解,node、chromium、V8整合而来,可谓是非常优秀。并且两款工具背后一个是微软支持,一个是GitHub支持,都具有大公司的稳定输出,值得一用。
3、Xcode、idea、visual studio等集成开发环境
说到集成开发环境,其实不需要多解释,企业级项目,涉及到很大的功能规模、涉及到很多开发人员,所以如何更高效的工作,还能高效的协作是最大的目标。因此集成开发环境是最佳选择。
Xcode自然不用多说,作为Mac自带开发环境,Xcode支持自家的objective-C、Swift开发的同时,还能支持C/C 的开发,毫无疑问,做Mac和iPhone开发的默认环境,这也是苹果平台上最好的IDE之一。
除此之外,如果你做Java开发,那么在Mac OS下,idea毫无疑问是最佳选择,要知道Android开发作为移动开发的大头,Google的Android也从eclipse中转向基于idea进行二次开发,就可以看出idea的价值还是非常受到认可的。
最后要说的是visual studio,虽然目前Mac OS平台下的visual studio是来自微软收购的xamarin产品,本质上跟微软Windows平台上的原生visual studio是有区别的,但是微软对这点的支持一定会做的越来越好。
当然还有很多开发环境,具体要看你要从事什么行业,你是从事移动开发还是服务器端开发,你用Java还是PHP...每一个具体的方向需要的工具自然不一样。哪怕是同一个方向,选择的工具也会不一样,做Java后端的有的人喜欢eclipse有的人喜欢idea,还有的人喜欢NetBeans等等。
最后总结一点的是,开发过程中不可能光是开发类的软件,对于一个程序员,如果没有设计师的话,还需要自己去切一些图片,这时候你可能需要Photoshop,你还需要一些版本管理的工具,例如git,第三方的终端工具iterm也是非常好的工具,以及GitHub客户端帮助你更好的利用git管理项目,你还可能需要the Brian和mindmanager等思维导图软件帮你更好的思考,以及OmniGraffle等工具来更好地分析流程,需要parallel desktop安装虚拟机测试系统,包括beyond compare等帮你更好的比对代码等等...
所以其实编程软件、以及编程相关的软件其实很多,你可能需要根据你自己的工作或者主要学习方向来确定你需要选什么样的工具。笔者会比较反对那种明显的倾向性工具理论,所以笔者始终建议适合自己的最优解决方案才是正确的决定,不要人云亦云,要自己的去实际使用才会获得答案。
怎样在Linux下编程?需要什么技术?
一、熟悉Linux基本操作和系统管理;
二、熟悉vim基本操作和man命令;
三、找一本厚点的C语言教材(比如ltc语言程序设计第二版gt),精读 实现每一个例子,做每一个习题;
四、熟悉计算机基础
1.买一本二手lt深入理解计算机系统(csapp)gt(影印或原版),精读 实现每一个例子,做每一个习题;
2.看网课cmu的15-213,做每一个作业,完成全部六个lab;
五、补课数学课
微积分、线性代数、概率和数理统计
离散数学
六、算法
1.买一本clrslt算法导论intro algorithmsgt(影印或原版),精读 实现每一个例题 做每一个习题
2.上网课,cs61b或Princeton的algorithms IampII
七、操作系统
1.买二手书lt操作系统概念gtlt现代操作系统gtlt操作系统:原理和实现gt(影印或原版),粗读前两本,最后一本精读 做每一个例子和习题。
2.上网课MIT6.828,做每一个作业,完成全部6个lab。
八、数据库
参照七。
九、网络
参照七。
十、云计算
1.直接上网课分布式系统
2.直接上网课cloud computing(以及advanced)。
----
十一大数据方向(线性代数和统计高分)
上网课
十二machine learning方向(线代和统计高分)
网课(推荐Stanford cs229 230,Andrew Ng吴恩达)