累了的时候看看这个 |
我的学位都非计算机,但是学习的时候,和工作后,用到不少programming,后来想自学c++/java。就学了学。主要我的思想比较喜欢简约的东西,这也是为什么后来学了理科,因为不喜欢作文那些冗长,繁琐的东西。所以,我看java敲那么多字就烦了,虽然听说java好,简单。我自学java/c++也就是看看
tutorials.有一次工作中要写一个程序,大概2,300行。我先用java写,怎么都不work,首先读一个文件进去那一步,就费了超大的劲,都没弄成。我后来改用c++,好多也不会,但是就google,看tutorials那样一步步来,不用一天,居然写成了。我觉得c++比java简单,起码写起来简洁。不知大家都是怎么看的?
就我接触过的一些东西,我觉得C++远比Java难... 类C语言的东西,obj-c容易上手点,其次C,CPP最难...
其实写点小东西的话,推荐python,简单高效风格优雅,win/linux/osx下都很好用.
@wanper 没有IDE Java几乎没法写 .net估计也一样
python,ruby,php之类的基本没这个问题.
学C++还得学硬件知识。但又不是纯硬件行业的硬件知识。学习的目的是为了让代码更高效。
学JAVA不学硬件知识。硬件方面的优化由JVM自动完成。
所以,显而易见,C++好的人,手工做了不少优化的工作。而JVM的通用性,导致它绝不会是任何情况都最优。所以极限效率拼不过好的C++代码。
但是JVM的思路是符合产业上下游的发展趋势的。软件人员专注软件相关的东西。硬件相关的优化由专门的编译器人员来实现。对于一个具体项目而言,JAVA产品不如C++高效,但从行业效率来看,JAVA的优势也是巨大的。
等LZ要写中型程序(几千行以上)就知道为什么大家说Java简单了,Java本身不是一种简单的语言,但比起C++那是简单了不少,写起来啰嗦不代表语言不简单。
我以前写过几年的C++,现在是能不用C++就不用,能用Python就用Python,不行就Java,除非迫不得以,否则不用C++。
感觉java是在开发/运行效率之间一个不错的平衡,只有两个算是不满的地方。
一是java做计算支持还是不好,手写循环快吐了,下次还是numpy得了
二是强制oo固然可以培养oop的习惯,但是有些地方有点勉强。比如common math里面算个统计量也要先建个object,有点蛋疼。
lz如果现在还是学生,刚刚才开始学的话,建议可以2种都学习一下,可以做ACM,能够快速对一种语言的语法和标准库进行熟悉,而且能够对比各种其快慢。
在互联网行业的服务器,当访问量巨大时,必须得用c++(可以认为用其它语言开发导致的结果是需要多几倍甚至几十倍的服务器)。国内的互联网三大巨头阿里腾讯百度大部分都是用c++,微信红包访问量创造奇迹,用的是也是c++。
java语言也很成熟,使用的场景比c++多得多,华为好像就有不少用java的,小的互联网公司,用java做服务器的也不在少数,因为用户少的话用什么都一样。
lz如果以后要当程序员,可以根据自己的兴趣来选择学什么。
Stevey's Drunken https://sites.google.com/site/steveyegge2/tour-de-babel
Compared to C++, Java as a language is about even. Well, scratch that, it's a lot better, because it has strings, oh man, how can you use a language with lousy string support.
重要的是,现在很少人去比较 Java 和 C++ 了,经过这么多年的发展两者其实并不构成直接的竞争了,使用C++ 还是使用 Java 的场景大多数时候区分还是很明显的.
楼主你应该说的是Objecitve-c比Swift好用得多, oc有来自c的宏,typedef,指针 ,有id来实现duck type
Swift天天看到AnyObject can't convertible to 'XXX' 各种强制转换才是烦.
@tracymcladdy 做了十几年c++的人有资格鬼扯
@whsh 做了十几年能说明什么?优秀的coder的创造力是平庸的coder的创造力的万倍!!
web应用没有java搞不定的(不服来辩!),用c++做web服务端是该下地狱的设计,各种复杂的业务,不小心一个空指针被引用,这个应用就崩溃了。
@tracymcladdy 我没你这么无聊,不想跟你辩,而且这里不是讨论这种问题的地方。我说了用c++做web服务端了么?百度阿里腾讯的服务端只有web?腾讯几万员工其中40%是程序员,90%用c++,百度类似。我又没说你的java不好,干嘛那么激动?你自己不小心空指针崩溃不代表别人就得和你一样。
@whsh 哦,企鹅90%用c++哇,自己统计的么?贴个工牌出来好么?
我是c/c++ linux 脑残粉,虽说目前在java web 这个深坑里面爬不出来。。
“在互联网行业的服务器,当访问量巨大时,必须得用c++(可以认为用其它语言开发导致的结果是需要多几倍甚至几十倍的服务器)。”
这句秀下限的话是谁说出来的哇?国内最具挑战性的互联网应用就是12306,看看别人怎么玩的,用什么玩的?
@racymcladdy 当你说出『优秀的codeer的创造力是平庸的coder的创造力的万倍!!』、『贴个工牌出来好么?』的时候,你的智商已经暴露。没见过这么无聊的。
c++脑残粉因为学不会c++倍受打击所以恼羞成怒了,我没空陪你玩。
语言没有简单和复杂
javascript够简单吧,但是一样的可以写出像coffeescript这样的解释器
我想说的是语言都是其次,我可以用JAVASCRIPT+nodejs实现网页路由,也可以自己封装一套纯CSS的效果库,而且越深入发现学的越多,贝兹曲线,OPENGL 2.0的开发语言,甚至有时候要用到一些JAVA或者C#的编程思维
JAVA有apache的各种开源项目,能够看完一个小项目的开源项目都很厉害了
c++有模板,宏命令,数据结构,指针的分配算法,而且更下去要对单片机有深入的了解
功力才是最重要的
@whsh 学不会C++,233333333333333333
从头到尾,没看到你说的有任何逻辑,哦,就暴露智商了哇?确实,智商用眼角余光就能俯视你了。23333
给你解释下,我为什么是linux脑残粉:
设计思想
Everything (including hardware) is a file
Configuration data stored in text
Small, single-purpose program
Avoid captive user interfaces
Ability to chain program together to perform complex tasks
编写sh脚本的思想
Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams, because that is a universal interface.
这完全就TM是coding的哲学和思想。
为什么是c/c++的脑残粉:
很简单,因为她相信程序员,不阻止程序员做他们想做的任何事。
至于为什么我现在不玩c了(虽说从头到尾没深入的玩过),因为我要朝着球运动的轨迹去,而不是朝着球的位置去,要知道球的运动轨迹,我就需要知道它历史上是怎么跑的。
70年代Unix的出现,是软件发展方面的一个里程碑,那个时期的C语言,也是语言方面的里程碑。(当时)所有的项目都在Unix/C上,全世界人都在用这两样东西写软件。Linux跟随的是Unix, Windows下的开发也是 C/C++。这时候出现的C++很自然就被大家接受了,企业级的系统很自然就会迁移到这上面,C++虽然接过了C的接力棒,但是它的问题是它没有一个企业方面的架构,而且太随意了,否则也不会有今天的Java。C++和C非常接近,它只不过是C的一个扩展,长年没有一个企业架构的框架。而Java在被发明后,被IBM把企业架构这部分的需求接了过来,J2EE的出现让C/C++捉襟见肘了,在语言进化上,还有Python/Ruby,后面还有了.NET,但可惜的是这只局限在Windows平台上。这些就是企业级软件方面语言层面就是C -> C++ -> Java这条主干,操作系统是Unix -> Linux/Windows这条主干,软件开发中需要了解的网络知识就是Ethernet -> IP -> TCP/UDP 这条主干。另外一条脉络就是互联网方面的(HTML/CSS/JS/LAMP…)。我是一个有技术忧虑症的人,这几条软件开发的主线一定不能放弃。遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。
该说的我说完了,说实话,我一直说我是一个装逼犯,但绝对不是一个和你一样秀下限的装逼犯。
不会回你了,因为你的层次太低,我这个装逼犯看不上!
@tracymcladdy 这个哥们,完全没有搞懂web服务器和web业务服务的区别,web服务器是处理大规模http请求。主要目标是高并发和响应低延迟。现在用的最广泛的web服务器apache和nginx,都是用C/C++实现的。所谓的java web只是用java去实现web服务器上的业务代码罢了。像BAT这种级别公司,服务器不会傻B到用java,paython去做接入请求管理。那撑不到几个用户就处理不过来了。一般都会用C/C++作接入请求处理,将请求的业务消息剥离后,抛给后面的业务模块去处理。这些业务模块可以用java,paython等去实现。java,paython之所以流行,一方面是语言设计层面,还一个更重要的原因是它们的标准库大而全,覆盖方方面面,写业务代码的效率很高。C++98的标准库很弱,但是现在C++11/14出来了的,标准库得到了很大的补充,开发效率也提高很多。
你还是要认清楚实质,各语言有自己的领域范围,这样比较毫无意义。
@mo4772 赞,这个才差不多是正解。C++的复杂让我这种程序员搞了5,6年最终放弃了,建议说C++简单的起码要读过STL和BOOST的源码,读了后你会觉得:F***K,真NB,这么NB的还是让聪明人去搞吧。于是我这种庸货转了JAVA。。。
PS:国内很多说做C++的其实就是搞的C语言,我待过几家500强的中外通信公司,还没看到一家把C++玩得非常转的
@billyhoom
难道不是nginx,c++,
或者boost asio,websocket
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号