第一次正儿八经在知乎回答,居然这么多赞,看来知乎上IT男很多啊。谢谢大家!不知道能不能破千,要是破千的话,可以考虑写点技术的干货。

——————————————以下是原答。

作为一个20年的老程序员来回答一下。

1998毕业,现在自己做一家IT公司,依然喜欢写代码。

工作这么多年,正式项目用过的语言有: Pascal/Delphi,dBase/FoxBase,FoxPro,VB,VBScript,JavaScript,COBOL,C/C++,Lua,Java,C#,各种数据库的SQL。

最早学的是Pascal,大学里面学数据结构用的,毕业以后用delphi写了一个小项目,然后再也没有用过。

dBase/FoxBase也是学校里面学数据库的时候教的,然后毕业以后用的是FoxPro,也是做了一个小项目,后面基本就没用了。

VB/VBScript作为主力语言,从1998年用到2002年,对,那时候做ASP。也用VB写过还算有规模的EXE的项目。至今书橱里面那本《VB5金典》依然保佑一席之地。VB做快速开发真的很好用。然而http://VB.Net就压根没看过。那已经不是VB了。

因为Web开发基本上没有断过,JavaScript一直陪我到现在。

COBOL是原来在对日外包公司工作的时候,接了日本一个野村证券的项目,居然是COBOL,然后,作为新技术研发部的负责人,当仁不让上了。边学边做项目,做完就扔了。

C是从开始编程就学的,断断续续用一点点,2003年做银行项目的时候,用IBM小型机,Tuxedo中间件,然后只能用C/C++语言编程(那个时候银行还不怎么接受Java)。然后自己开始创业,做游戏,用OpenGL做了一个游戏引擎,跨平台的那种,一次编写,Windows、Android、iOS都能跑。C++写的。中间尝试了一下Lua,写了两个小游戏,觉得对程序的掌控能力还是比C差远了,就放弃了。

最后就是Java和C#这对双子星,是用的时间最长,做过项目最多的。C#是从2001年开始,beta版本开始学的。记得第一个项目是2002年6、7月的样子吧,那时候公司接了一个比较大的Web项目,本来是准备用ASP做的,结果那时候我正好在学C#,然后看了一下说是10月份会发布正式版(时间大概是那样吧,年数长了,记忆有点模糊),然后仗着自己是项目负责人,外加老板不懂技术,就擅自决定用C#/http://ASP.Net来做。项目做完大概是10月份,在项目上线的前几天,微软发了正式版ASP.Net1.0,项目有惊无险的上线了。现在想想有点作死的感觉。如果微软把.Net正式版的发布时间往后推一个月,很难想象老板会拿我怎么样。

Java差不多跟C#同时学的,然后一直做啊做,从EJB做到SSH,再到Android。那时候年轻,学习的精力旺盛,然后觉得C#和Java似乎差的不是太多。

PHP看过,没用过。Python看过,没用过。还有Ruby,看过,没用过。我说看过的意思大概就是写过Hello World,但是没有拿来做过项目。

我是真的喜欢写程序,所以有什么新奇的东西,都喜欢拿来跑一跑。

然后说说对编程的看法。

首先,我认为,语言没有高下之分,只有应用场景之分。作为一个技术决策者,拿到任何一个项目,首先第一个考虑的,不是怎么做,而是用什么做。如果你拿到的是一个Web项目,我认为,在很多情况下,JSP、PHP、http://ASP.Net甚至Node.js基本上都是等价的,应该都能够很好的完成项目的开发,选择什么技术开发,看自己所拥有的资源禀赋和具体情况。如果手下一帮弟兄都是搞Java的,当然JSP啊,如果手下小弟都是做C#,当然http://ASP.Net啊。当然,项目有特殊要求的除外,比如,如果甲方是银行,那估计就没法用http://ASP.Net了,如果是有客户端的项目,当然C#+WinForm啊,如果是做安卓,当然Java啊。

其次,作为一个好的程序员,应该至少会三种以上语言,这样你能够充分接受不同语言的风格,更关键的是你会去关注不同技术社区的讨论,开阔眼界,对编程的本质会有更深刻的体会,然后你会觉得,看任何语言都是差不多的。我经常对公司的技术人员讲,要用Java的编程思想来写C#的代码。这是不同技术社区的风格体现出来的。在Java的社区,你能看到更多的对模式、框架的讨论,而微软虽然自己做的东西很讲究模式和框架,但似乎更喜欢做好一堆全家桶给你,让你去做快速开发。

第三,对各种语言的感受,写起来最爽最有成就感的当然是C,那种一切尽在掌握的感觉是很奇妙的。不过我现在公司没有C/C++程序员了,因为公司不做游戏了,我也有起码5年没碰C了。我最喜欢的还是C#,我很崇拜安德鲁,C#的语法和机制真的设计的很精妙:泛型、delegate/event、Attribute、Lamda表达式、函数式编程,总觉得这个语言的设计给人一种特别的精致美感,能满足我对一门好的语言的所有的想象。自从.Net Core以后,跨平台也不是问题了。相对Java来说,我更喜欢C#。当然,我是不会排斥Java的,只要做Java能赚钱。

第四,我觉得数据结构真的非常重要,如果你想成为高手的话。在学校里面,一定要把这门课反反复复的学习。当然,如果你只想做做Web开发,写写网页的话,当我没说。

最后,对计算机专业的学生来说,我认为,在大学就是要打好基础。语言的东西真的不难,所有语言的编程思想都是想通的,语法其实也都大同小异,无外乎顺序结构、循环结构、分支结构。不用太焦虑应用型的开发,这些东西其实学起来是很快的。重要的是基础。C语言是必学的,学好C,让你对计算机的原理(数据结构、寄存器、内存、硬盘读写等等)有更深刻的认识。然后,为了工作,学学Java,学学C#。数据结构、编译原理这样的课程,当你工作年限变长,开始写架构、开始做性能优化的时候,你会觉得特别有用。当然,最开始的简单开发任务基本上用不着。不过,不想做高手的程序员,当然不是好程序员,是吧?

还有,其实我是非常建议,作为程序员,C#是必学的,不是因为我个人喜欢C#,是因为,实际上,按照我的习惯,在做项目的过程中,我经常会写一些小工具,而这些小工具,很多时候当然都是写成exe啦,所以,一般我都会选择用C#来写。

——————————————————

补充一点,我认为好的程序员不能把自己绑定在一种语言上,不能把自己就定义为JAVA程序员,C#程序员,等等。还是那句话,语言没有高下之分,只有适用的场景。好的程序员,应该有很快学会一种新的语言,并解决实际问题的能力。在我二十年的程序生涯中,有过不止一次,因为项目,一两天学一种语言的基本语法,然后边Google函数和库用法,边完成项目,然后项目完成后就扔一边的经历。

写程序,关键的是解决问题的思路,而不是语言本身。对语言来说,无外乎语法,函数,类库,现成的框架这些东西,这些都是“术”,而你对数据结构,设计模式,系统架构,计算机原理这些东西的理解,才是“道”。补充一点,对SSH这种现成框架的使用,并不能称为架构设计。

再举个例子,比如你要做网络编程,那么你对TCP/IP的理解,socket是怎么回事,怎么握手,怎么发送数据之类的理解是最基础的,是所有语言都通用的,至于最后你用JAVA来写,还是用C#来写,有多大区别?其实都是大同小异。

最后,要成为高手,学好英语,学会翻墙,一定要用Google。记住一点,凡是能百度到中文资料的内容,都已经不是“高级”的内容了。

python和c++哪个好用-C#、C++、Java、Python 选择哪个好?相关推荐

  1. python 单点登录_清华园计算机系联合推出的Java+Python视频曝光

    Java 和 Python 双方都有各自适合和发展的领域,所以别人常问我学习什么语言好,或者让我在两种语言进行比较好坏. 其实编程语言只有适不适合你个人去学,并不存在好坏,每种语言的存在即是合理的,你 ...

  2. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

  3. python一个月能掌握吗_零基础python入门分析,如何做到一个月学会(深思极恐)...

    在数据分析领域,python是一个绕不开的知识和工具,如果不会用python就很难说自己会数据分析,但是最近很多想要入门数据分析的小白经常问我,Python怎么入门?Python虽然被称作是" ...

  4. 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?

    学软件开发的都知道实战项目对于学好一门语言是很重要的.在这里可以向大家推荐几个Python实战项目 项目1.Python 图片转字符画 本课程用 50 行 Python 代码完成图片转字符画小工具.通 ...

  5. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  6. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  7. 为何python攀上数据科学巅峰?调查显示Python超越R

    根据KDnuggets 2017年最新调查,Python生态系统已经超过了R,成为了数据分析.数据科学与机器学习的第一大语言.本文对KDnuggets的此项调查结果做了介绍,并补充了一篇文章讲解为何P ...

  8. python网络通信的几种方式_两种方式,java=python,使用py4j进行通信

    我使用py4j实现python和java之间的通信,能够从java端调用python方法.但从python我不能发送任何对象或调用java方法.这是我试过的密码.在 我的java代码:public i ...

  9. python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础

    本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...

  10. 《Python从小白到大牛》第4章 Python语法基础

    <Python从小白到大牛>已经上市! 本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语 ...

最新文章

  1. 程序员每天工作摸鱼俩小时,月薪35K?
  2. linux中的while命令
  3. 远程计算机串口控制软件,智能控制的设备上使用远程开关需要用到RS485串口继电器、网关、电脑平台...
  4. 如何实现tm同时监控多个状态的改变_广电机房监控系统【斯必得智慧机房】
  5. 送书福利 | 大数据智能:数据驱动的自然语言处理技术
  6. [转载]_tmain main wmain WinMain
  7. 会议 | 2018年全国知识图谱与语义计算大会(CCKS 2018)
  8. 控制台应用和空项目有什么区别_在公司做的项目和自己在学校做的有什么区别?...
  9. 如何用Java打出DNA图案_DNA (Java代码)
  10. 漫画:什么是删库跑路?
  11. 中国移动虚拟服务器设置,在中国移动公众服务云平台上服务器虚拟化的设计与实现...
  12. logback日志pattern_Logback 配置文件这么写,TPS提高10倍
  13. 解决速达软件提示将numeric转换为数据类型numeric时发生算术溢出错误问题
  14. ShadowGun Demo学习(非技术向)
  15. hadoop进阶---hadoop性能优化(一)---hdfs空间不足的管理优化
  16. java开发基础知识学习总结
  17. 以太网服务器怎么改成无线网,win10 以太网显示无线wifi名称怎么改
  18. 三菱转以太网模块连接 FX3U/3UC系列 PLC使用步骤
  19. 新型威胁分析与防范研究
  20. [附源码]计算机毕业设计JAVA校园快递管理系统

热门文章

  1. 羊皮卷的实践-第二十一章
  2. 对GET/POST请求返回cookie中的键值对进行重新组合
  3. android8 Notification
  4. Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
  5. 如何对SQL Server数据库中的孤立用户和系统及用户建立映射
  6. 基于python物流管理系统毕业设计-长白高校邦数据科学通识课【Python基础语法】答案...
  7. 利用python进行数据分析 英文-如何学习和评价《利用python进行数据分析》这本书?...
  8. 如何自学python爬虫-零基础入门Python爬虫不知道怎么学?这是入门的完整教程
  9. python100行代码程序-100行python代码,轻松完成贪吃蛇小游戏
  10. python手机版打了代码运行不了-三款可以在安卓手机上运行Python代码的软件