❶ 为什么很多程序员会鄙视MATLAB
用MATLAB的人,绝大多数都是做科学计算、工程理论计算、数值分析、金融分析用的,用户群主要是科学家、工程总师、数学建模、金融投资决策班子等等,其中不乏院士博士,普通程序员就仰望吧,哪里能鄙视?
因为Matlab掩盖了大量的程序实现细节 。Matlab是由美国mathworks公司开发的一款大型商业软件(不便宜哦),它的开发语言是M语言(一门解释性语言,必须依赖MATLAB解释器)。
在程序员的圈子里面,的确存在着鄙视链,其中Matlab也的确遭到一大批程序员的鄙视,原因是普通程序员(比如使用C、C++编程语言的)要实现一个功能,就必须理解它的每一个细节,再来组织编码。而MATLAB却不同,它本身懈怠了大量的库,很多功能你根本不需要了解他是如何实现的,在没搞清楚原理的情况下一行代码就可以搞定,对于那些辛辛苦苦写很多代码的程序员来说,是不是很气人。其实Matlab是一种很有用的科研工具,下面我就来介绍一下MATLAB的一些更要应用。
关于MATLAB,就先介绍这么多,欢迎大吉关注太科罗技,并在下方积极留言讨论。
恕本民科直言,
程序员与做科研,完全就是两码事!
程序员是靠编程序混口饭吃,需要优化,精雕细琢!
而做科研关心的是用数学模型来尽快验证某个猜想是否正确,根本就不想,也不需要在程序的优化上花时间,有现成的拿来就用更好,而MATLAB中的各种应用信手拈来,方便无比,节约大把时间,何乐不为?
这就是本民科用MATLAB做科学研究的原因!
程序员鄙视MATLAB?
反过来了吧?
程序员不会做科研,所以不在一个层次!
因为程序员很少会用Matlab的,根本不知道这里面包含了多少技术含量
我跟你讲,程序员就这表情,真是人在敲代码,锅从天上来。莫名其妙的背上鄙视MATLAB的罪名,也是一脸懵逼呀,而且这“很多”程序员是怎么统计出来的?
的确,在程序员中的确存在各种语言互相瞧不起的现象。就像某个经典的笑话:某程序猿追求女神,女神说你能让这论坛里所有人吵起来我就跟你走。某猿说Python是世界上最好的语言,果然整个论坛都炸了。女神说我们走吧,某猿不走,非得说服其他人。
对于普通程序员来说,每天需要实现多少功能,完成多少个页面,涉及算法的部分很少。而 MATLAB是个数学软件,都是数学公式,自然用不上。这应该就是为什么有些程序员“鄙视”MATLAB的原因了。
MATLAB在算法开发、数据可视化、数据分析以及数值计算方面是其他语言所无法匹敌的。准确来说,MATLAB是一个研究工具,与C,C++,java等语言不同,其他语言更像一个构造工具。打个比方,MATLAB就好比示波器,而其他语言则是计算机,本身不具备太多比较的意义。
虽然MATLAB在数学处理方面很优秀,但它也局限在这了。程序员是一个很广泛的工作,包括写爬虫,做软件,开发 游戏 ,部署网络等等。MATLAB就算勉强能实现,编程体验也比其他语言差。 MATLAB的“偏科”也导致了一部分人对它喜爱不起来,但也构不成鄙视的罪名。
1、使用matlab的根本就不是程序猿
2、程序猿也不鄙视matlab
3、matlab的焦点是实验实现,而不是生产环境
4、程序猿鄙视的顶多是使用matlab的人的编程水平,因为matlab的语言复杂度和需要的特性比一般编程语言简单太多了。但是没哪个程序猿会鄙视使用matlab的人在其领域的专业水准。举个例子,就好像我会鄙视刘国梁的肚子,但是我不会认为因为我有六块腹肌我就可以球桌上干赢拿信用卡的胖子。
5、如果真有人鄙视matlab,那就好像是会打字的人鄙视牛顿手上的纸笔说它落后,仅此而已
这样类比吧,放高中,matlab就是那种最高级别,按钮最多,一个巨大无比的屏幕,但是只能显示马赛克的卡西欧科学计算器。任何一个使用ipad的人都会鄙视这玩意
但是,这货方便啊!真方便啊,你把考题输进去(当然很麻烦),不光给你结果,还给你过程,甚至所有参数每一秒的值都给你记录起来,随时回头查看,参数是在那一秒跑飞的都能找出来
没有程序员鄙视matlab,问题本身就不成立。
先问是不是再问为什么。
我是程序员,用的是JS主力,含Node.js。
大学参加过数学建模,也拿过国家奖,用的就是matlab。
我不知道你哪里得出程序员鄙视matlab这一出,高级黑?
另外,楼下瞎吹matlab是什么工程院院士用的啥啥啥的,抱歉,我一个二本院校小菜鸡也用,程序员也用。而且,我是不是可以怼C语言,谁人不用?
归根到底,就是个引战,两个东西不在一条线上,有什么可对比的?还鄙视?我们程序员也没那功夫好吧,福报领不完,闲得慌。
作为一个写了多年代码的程序员,对于所谓的程序员鄙视链已经显得比较麻木了,对于程序员这份职业对于大部分的人来讲可能就是一份工作,工作的目的就是多拿点工资能够更好的改善家人的生活,当然也会存在一些人发自内心的对编程这份工作感兴趣,如果是发自内心的喜欢一件事情,就会非常容易出成绩也会工作起来非常的轻松。对于存在所谓的程序员的鄙视链一般是对于刚入行的或者门外汉会这么提,软件行业分类十分众多而且每个种类里面都存在很大的差异性,都有其自身的难度所在不能简单的认为哪种编程语言就是最优的,如果有这种想法证明对于软件的认知还只是存在于初级的阶段。
对于MATLAB软件使用主要的群体在于科研工作者,无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理等领域使用的比较多,属于集成性非常强的工具软件,软件从本质上讲就是工具般的存在,服务于各个行业如同数学在科学领域的作用,无论多厉害的软件高手最终还是要以开发的产品为主要的代表作,对于软件使用层级相对弱化很多,所以作为一个程序员鄙视MATLAB使用者,其实是没有道理存在的。一个使用者一个开发者本质上没有鄙视链条的存在,而且用好一个软件也不是一件很简单的事情,MATLAB属于集成性非常强的很多成熟的库文件都集成在里面了,对于科研工作者来讲是一种极好的工具存在。
程序员做的本质工作就是做出优秀的产品给用户使用,但是很多开发者由于长期盯着功能模块往往忽视了很多外在的东西存在,特别是初级的程序员始终觉得底层的编程语言在难度上要高于java类的高级语言,其实每种编程语言都有其存在的价值所在,而且每种编程语言都有其内涵所在,真正意义上掌握一种编程语言也不是一件很轻松的事情,从程序员的角度出发只要是掌握了一种编程语言再去学习新的编程语言都会简单许多,编程语言虽然在语法上有区别但在编程模式上大同小异,如同线程的概念如果是在学习C语言编程的时候已经掌握了,那么切换到别的语言也会变得顺理成章,只是在语法细节上的差异而已。
在程序员领域所谓的鄙视链其实更多是外行在摆弄的事情罢了,对于真正意义上的程序员宁愿多去看看代码也懒得去做这种无聊的事情,术业有专攻,但是编程领域行业的差距就十分的巨大,各个领域有机的组合在一起才能够真正铸造出好的产品来,从目前编程大的趋势上看应用类的编程在各个领域展示会更加的明显,因为软件行业经过几十年的快速发展已经积累了大量优秀的资源库,很多偏向于应用级的软件就是借鉴和积累了前人的经验。
每种软件都有其存在的价值和属性。而且只要生态存在那么就会有意义存在,MATLAB的存在让很多科研工作者提供了极大的便利,从国内软件所欠缺的就是对于软件基石的投入,国内大型的互联网公司把主要的精力放在应用级层面的开发,都是想着如何开发出亿万级的用户的应用,对于基础层面的软件投入想对稀少,基础软件层面的投入需要长期周期长见效慢,而且这种生态的建立需要相当漫长的时间,像常见的工具软件图形处理以及文字处理软件,看起来不起眼都是背后的企业经过多年的时间锻造出来的,一旦涉及到版权层面就会容易被卡脖子,华为公司公司被美国公司打压就是典型的例子,基础才是决定是否能够成功的关键因素。
❷ 程序员等级划分标准
初级程序员通常能完成简单模块和项目的开发工作,但难以胜任复杂模型的开发。一般是入行不久,1年以下工作经验的同学。熟悉前端基础知识,如HTML、JS、CSS。能够使用一门MVVM框架进行简单的业务开发。遇到复杂的组件和模块,会找现有的轮子使用。会使用网络、Google等检索工具搜索问题。
高级程序员一般具有独挡一面的能肢空前力,能够高质量的完成工作,能把握一个系统团队的整体实现,在推行过程中历清能提炼新的方法或方案,或对现有方案提出改进建议并被证明有效,通常是具有3年+工作经验。
❸ 是不是被鄙视过,讲讲IT工程师的鄙视链
工具鄙视链
Allegro → mentor →PADS → AD→ protel99se
示波器之间的鄙视,这就涉及到示波器内部电路的复杂及技术的先进性了。
用安捷伦示波器 →泰克示波器 →台湾产的示波器 → 国产示波器→ 二手模拟示波器 → 没有示波器
逻辑鄙视链
Altera和Xilinx相互鄙视,他们都鄙视用Lattice芯片的……
Verilog和VHDL相互鄙视,他们都鄙视用原理图拉线的……
以前用VerilogHDL的鄙视用HLS、鄙视用OpenCL的,现在情况变了……
现在轮到谈谈软件的鄙视了,软件就多了,各种语言之间的鄙视
asm → C ↔ C++ ↔ Java ↔ C# → JavaScript → VB → VBScript
Common Lisp ↔ Scheme → Emacs Lisp →→ Python
Python ↔ Perl → shell
php → all
程序员鄙视链
搞C的>=搞C++的>搞java的>搞.net的>搞js的>搞html的>美工
会汇编语言的鄙视会C 语言,搞C 语言的鄙视 C++ 。C++ 又要鄙视 Java 和 C# ,Java 和 C# 他们相互鄙视, C# 又鄙视 Visual Basic和会把 C# 念成“C 井”的,会把 C# 念成“C 井”的则鄙视认为 HTML 是一种程序语言的,还有很多语言之间的鄙视,数不胜数,也五花八门,他们总是能找到鄙视的对象,为了表示自己的工作如何高大上。
用Python 3的工程师鄙视还在用 Python 2 的工程师,用 Python 2 的工程师鄙视遇到 UnicodeEncodeError 的工程师。
工种鄙视链
研发的 → 测试的 → 生产的 → 焊接的→ 不会焊接的研发
软硬皆通的 → 只会软件 或只会硬件→ 软硬都会,万金油型。
搞硬件的 → 画PCB设计的 → 不懂PCB设计只懂硬件的。------啊!你是PCB工程师,不就是画图嘛,就是个工具而己。
结构设计、PCB设计、热设计,平时客客气气的,在出毛病的时候就开始相互鄙视了,谁都不认谁。
销售和研发,相互鄙视;产品和研发,相互鄙视
❹ 程序员的鄙视链是什么
编辑器的:
Emacs → Vim → Sublime → Word → Power Point
Vim →→ Emacs + evil插件
notepad++ → notepad
all → Source Insight → notepad
编程语言的:
asm → C ↔ C++ ↔ Java ↔ C# → JavaScript → VB → VBScript
Common Lisp ↔ Scheme → Emacs Lisp →→ Python
Python ↔ Perl → shell
PHP → all
操作系统的:
Unix → Linux → Windows → DOS
Solaris →→ 其他Unix
*BSD ↔ System*
OpenBSD ↔ FreeBSD → NetBSD
Arch → Debian* → Redhat*
Debian → Ubuntu
Fedora → CentOS → RHEL
OSX → all
IDE的:
Emacs + plugins ↔ Vim + plugins → 其他加插件的编辑器
IntelliJ → Eclipse → NetBeans
Code::Blocks → CodeLite
VS → all → Turbo C 2.0
❺ 程序员算法解题方法与思路
此方法通过写出问题的一些特定的例子,分析总结其中的规律。具体而言,就是通过列举少量的特殊情况,经过分析,最后找出一般的关系。
问题与以前莫个算法解决过的问题相似,此时就可以触类旁通,尝试改进原有算法来解决
此方法首先将问题简单化,如改变数据类型、空间大小等,然后尝试着将简化后的问题解决。
为了降低问题的复杂度,很多时候都会将问题逐层分解,最后归结为一些简单的问题,这就是递归法
将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法一般包括以下三个步骤:
1)将问题的实例划分为几个较小的实例,最好最有相等的规模。
2)对这些较小的实例求解,而最常见的方法一般是递归。
3)如歌有必要,合并这些较小问题的解,以得到原始问题的解。
一般而言,时间复杂度越低的算法越高效。而更想达到时间复杂度的高效,很多时候就必须在空间上有所牺牲,用空间来换时间。而用空间换时间最有效的方法就是Hash法、大数组和位图法。
在设计题目时,往往会有一个载体,这个载体便是数据结构。如数组、链表、二叉树和图等,当窄体确定后,可用的算法自然而然就会显现出来。可问题是很多时候并不确定这个载体是什么,当无法确定这个载体时,一般也就很难想到合适的方法了。
当遇到上面的问题时,可以采用最原始的思考问题的方式——轮询法。常考的数据结构与算法一共就几种,如下图
此种方法看似笨拙,却很实用,只要对常见的数据结构与算法烂熟于心,一点都没有问题。
❻ 程序员学算法到底有什么用
算法是编程的基础,可以提升自己的逻辑能力,好的算法可以使编程更简单,减少冗余,用最短的代码实现功能,学好算法是很有必要的
算法是计算机的灵魂,是解决所有问题的根源,所以计算机与数学关系非常密切。
程序是算法加编程语言。其中,编程语言是很多程序员都熟知的。但说到算法部分程序员觉得跟自己关系不大。实际上,所有的程序都要用到算法。下面举几个算法的例子帮您理解一下算法的作用。
HelloWorld里的算法
学过编程的人,接触到的第一个程序大概都是着名的“Helloworld”了。这么简单的程序会有算法吗?当然有啦,请思考一下计算机是只认识数字的,怎么让它能识别文字呢?聪明的人类给每一个文字都制定了一个编码,配合数据类型的定义,计算机就能识别文字了。这种编码的方式就是一种算法了。您在键盘上输入文字本身就是一种算法的实现。英文还好就一两百个字母数字和符号。汉语博大精深有几万个字符,用101个按键组合来体现所有的文字这本身就是一种了不起的算法。
经典的算法-割圆术
割圆术跟程序的关系不大,但它却凝聚了编程的思想。我们知道所谓程序运算是由四则运算加上逻辑运算组成的。割圆术正是反复使用用了这些基本运算,经多次循环不断接近圆周率的。这个方法在算法中叫递推法。在只能用算筹的年代,就能想到这么时尚的方法,我不得不说老祖宗真的很聪明。从另一个角度上说,哪亮氏算法其实是超越了编程的一种思想。
一个关于算法的故事
这个故事有点悲伤。我们知道法律规定一个人去逝后,他的遗产要由直系亲属继承。有这样一个家庭夫妇二人和一个孩子。有一天丈夫带着孩子二人坐飞机旅行,不幸的是飞机坠毁了二个人都遇难了。现在出现了一个遗产继承的问题。
丈夫的父母都健在,如果丈夫先于孩子去世,那么按照法律他的遗产要由父母妻子和孩子四人继承,每人分得四分之一。之后孩子去世,妻子将继承孩子的全部财产。结果是父母每人分得四分之一,而妻子一人独得二分之一。
如果孩子先于丈夫去世,则结局就是父母和妻子每人得三分之一。
到底该怎么分呢?没人能知道,因为谁都没有办法搞清楚丈夫和孩子哪个先去世。这说明了前面那个关于继承的法律有点问题。这个问题是一个关于时间的算法问题。这种现象在互联网的世界里很普遍,很多人都在发信息,但互联网不能保证先发的信息就能先到。因此,必须要设计出算法来解决这种时间上的冲突。
我们可以把计算机程序想象成用数字去模拟现实世界,算法则对应了现实世界中的各种规则。不李散懂得算法,我们便无法确定写出来的程序能否满足需求。
很高兴回答您提出的,程序员学好算法到底有什么用?
1、首先算法学好的话,不论对你思考问题的方式还是对你编程的思维都会键拍有很大的好处。
2、编程算法只是算法的一种表达形式,还可以用表格或流程图来表达算法。
3、各种算法在不同领域扮演不通角色,本质上没有区别,一通百通。
4、一些基础算法的话,没必要找资料书籍,也没有太多要求,随便在网上搜索一下,就能找到很多详细的资料。
其实,一般初级甚至中级程序员在日常开发中是用不了算法的,要么接触不到,要么别人帮你封装好了,你可以用现成的
但是时间一长,你就会发现不会算法,就很难变得更加优秀,你会发现优秀框架的源码,部分是需要用到算法,你不懂,有些存储原理,也用到算法,用到这些算法,你的代码执行的效率更高,这个时候你就需要去了解这些东西,否则你就很难再上一层楼
千万不要觉得算法不重要,其实这个是一种宝贵财富,在日常的开发中,对你有潜移默化的影响,所以,想成为一个优秀的程序员,算法数据结构是必不可少学的,一起加油学习算法吧
❼ 为什么计算机鄙视软工
因为有的程序员十几年如一日,只会花架子,比招式,而真正的高级程序员修炼的是内功。这就是所谓的程序员鄙视链,初级程序员比招式,高级程序员只看内功。修炼内功就得从基础原理做起。
❽ 程序员鄙视链,所有工程师都鄙视php工程师,为什么
鄙视像条食物链,无处不在。
工作篇