
据Stack Overflow 2019年的调查数据显示,Linux和Windows是最常见的开发平台,大约有一半的人使用Windows做开发,其余的大约平均分配给了MacOS和Linux。
单论IDE面向的用户来说,Linux一点也不小众,IDE不开发Linux版不仅仅是散失四分之一的用户,而是丢失了一整个生态。
Linux版IDE的需求是切切实实存在的,开发IDE的商业公司都不会忽略这个市场,而且现有的跨平台GUI开发方案都比较成熟了,这也降低了不少的开发成本,如JetBrains全家桶大量使用Java,迁移难度相对较低。
商业化很成功的IDE收回成本肯定不是问题,因为单套IDE售价通常都不便宜,加上销售规模庞大,利润十分可观。也有不少IDE是非盈利性质的,根本不用考虑收回成本,它们的资金由某些基金会提供或来自 社会 捐赠。
IDE跨平台是必然趋势很多大厂背后都有自己的小心思,不愿意把技术绑死在Windows上面白白的给微软打工,通过跨平台来压制微软在 *** 作系统上的优势,重新制定 游戏 规则。如:Sun有自己的工作站和Solaris、IBM有PowerPC和OS2。
现在语言和框架层面已经基本解决了跨平台问题,那么即使在应用方面还需要进行少量的适配,成本也并不会高到哪里去。如果只专注一到两个平台的话,确实可以做到深度优化,但这个代价是放弃未来在其他平台发展的可能性。未来如果还要移植到其他平台,如:Android、ARM架构,跨平台的IDE就会显得得心应手。
开源社区也广泛接受了跨平台的思想,并且一直致力于实现跨平台的目标。像Wine、OpenOffice、Cygwin这样的适配工作都有人搞,做IDE的怎么可能放弃Linux平台呢?
微软发现风向标变了不能继续这样玩下去了细心的小伙伴们就会发现这几年微软变了,开始拥抱Linux、拥抱开源、拥抱跨平台。除了Windows、Office、Azure这些可以直接盈利的项目没有开源之外,其他的都开源了,目前微软的开源项目已经有一千多个了。
Vscode、GitHub、Azure已经形成了一条完整的生态链,只要在这条生态链上稍微进行扶持,就能吸引更多的开发者、应用选择Azure。
套用一下纳德拉说过的话:“微软长期坚持的一个信条是,Linux等开源软件是公司的敌人。现在我们已经无力为这样的态度买单。我们必须满足客户的需求,而更重要的是确保我们以一种前瞻的方式而不是透过后视镜寻找机遇”。只有在战略上拥抱Linux、开源、跨平台,只有通过开源社区的广泛参与,微软才可能持续的壮大。
跨平台开发正在成为主流,微软免费推出的跨平台Web和云开发代码编辑器vscode支持多达 30 多种编程语言,为跨平台开发者带来了极大的便利。VSCode和Typescript的组合也让复杂的前端项目变得容易许多。
从IOS、Android、Windows Phone的混战就可以看出开源、跨平台的重要性如果让一个软件开发者只开发IOS应用,而不开发Android应用,他绝对会说这样是很明智的。这时跨平台开发的重要性就开始凸显出来,它可以减少代码重构、部署的时间,降低开发成本。所以跨平台的IDE是非常有优势的。
以上个人浅见,欢迎批评指正。
IDE的开发是商业行为,一样是符合市场规律的。
首先,Linux服务器占用率很高,所以使用Linux开发的程序员的比例很高。因此开发Linux版本是符合市场规律的。
其次,使用c或是Java开发的IDE,gui改改就能移植到Linux,所以开发成本可控。
最后,不论是Linux还是Windows版本,很多IDE都有免费社区版,一方面很多开源的东西需要更多人参与维护才能完善,另一方面使用量上来了各种赚钱的方式就产生了。而不只是卖软件license赚钱一条路。
linux主要用户群就是程序员,编程语言IDE主要用户也是程序员,有什么理由不开发Liunx版
大公司开发跨平台ide不一定单纯为了钱,像是google的chrome,通过市场占有率可以推动互联网一些新技术的发展,比如 ssl,spdy,只有通过较大的市场份额才有制定标准的话语权。 还有是培养用户习惯,增加用户粘性后推广自家其他服务,比如vscode,微软家的。 还有就是软件成本是一次性的,开发出来后销售的是使用权,不是所有权,所以可以无限授权,现在linux开发用户也不少,企业看中的是大客户企业授权。这个是营收大头,还有一些定制化服务也是单独收费的。总之,一个企业公司不是做福利事业的,他是需要盈利的,只是我们一时半会没看明白他的盈利模式。
c语言的几个IDE是用c语言或java写的。开发的时候注意的话,很容易跨windows和linux,成本差别很小
如果是使用跨平台语言做的IDE(如java),不需要针对windows和linux单独开发。
因为开发windows比开发跨平台的成本高,开发windows要么mfc,开发超慢,要么.net,但是.net客户端部署成本高。反而是qt开发,效率高,部署简单,而且跨平台,python开发人员也好招。
ide很多都是社区版的,都是程序员自己义务工作搞出来自己用的工具。所以,为什么不开发linux版本?难道你准备在windows上调试linux程序?
你说的是idea吗?idea是java写的,随便套个壳可以在任何平台使用。也是它消耗内存巨大的原因
eclipse 开源的
一、linux和os:
1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验
2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握
3、awk sed需掌握
4、共享内存的使用实现原理、然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?
5、c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)
6、ELF是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss段)
7、使用过哪些进程间通讯机制,并详细说明
8、makefile编写,虽然比较基础,但是会被问到
9、gdb调试相关的经验,会被问到
10、如何定位内存泄露?
11、动态链接和静态链接的区别
12、32位系统一个进程最多多少堆内存
13、多线程和多进程的区别(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)
14、写一个c程序辨别系统是64位 or 32位
15、写一个c程序辨别系统是大端or小端字节序
16、信号:列出常见的信号,信号怎么处理?
17、i++是否原子 *** 作?并解释为什么???????
18、说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)
19、列举说明linux系统的各类异步机制
20、exit() _exit()的区别?
21、如何实现守护进程?
22、linux的内存管理机制是什么?
23、linux的任务调度机制是什么?
24、标准库函数和系统调用的区别?
25、补充一个问题:系统如何将一个信号通知到进程?
二、c语言:
1、宏定义和展开(必须精通)
2、位 *** 作(必须精通)
3、指针 *** 作和计算(必须精通)
4、内存分配(必须精通)
5、各类库函数必须非常熟练的实现
6、哪些库函数属于高危函数,为什么?(strcpy等等)
三、c++:
1、一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键)
2、虚函数的作用和实现原理(必问必考,实现原理必须很熟)
3、sizeof一个类求大小(注意成员变量,函数,虚函数,继承等等对大小的影响)
4、指针和引用的区别(一般都会问到)
5、多重类构造和析构的顺序
6、stl各容器的实现原理(必考)
7、extern c 是干啥的,(必须将编译器的函数名修饰的机制解答的很透彻)
8、volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻)
9、static const等等的用法,(能说出越多越好)
四、数据结构或者算法:
1、《离散数学》范围内的一切问题皆由可能被深入问到(最重要,最体现功底,最能加分,特别是各类树结构的实现和应用)
2、各类排序:大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用等等
3、hash, 任何一个技术面试官必问(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞)
五、网络编程:
1、tcp与udp的区别(必问)
2、udp调用connect有什么作用?
3、tcp连接中时序图,状态图,必须非常非常熟练
4、socket服务端的实现,select和epoll的区别(必问)
5、epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认)
6、大规模连接上来,并发模型怎么设计
7、tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免time_wait状态占用资源(必须回答的详细)
8、tcp头多少字节?哪些字段?(必问)
9、什么是滑动窗口(必问)
10、connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态)
11、如果select返回可读,结果只读到0字节,什么情况?
12、keepalive 是什么东东?如何使用?
13、列举你所知道的tcp选项,并说明其作用。
14、socket什么情况下可读?
六、db:
1、mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)