开通博客后,一直都是转点别的朋友写的有意思的博文,今天我来写我在博客园的第一篇文章,说的不对的地方请你指正。希望本文能为一些准备学习编程的朋友有一点帮助。

开发桌面程序一直都是c语言,c++的天下,因为他们直接编译为机器码,直接在进程中加载运行,速度会很快,c++既有面向过程,也有面向对象,功能强大,但是很臃肿,很杂乱,了解java的朋友看了c++的代码可能会觉得恶心,c语言是面向过程最优秀的语言,简洁,高效,紧凑,比较适合开发底层的东西。

说说.net吧,其实执行效率和java几乎是没有区别的,本来希望c#是一个面向对象的c语言,可是他不是,他也像c++一样的庞大和臃肿,新的特性在不断增加,有些特性像玩具一样,这也是我为c#担心的一点,很多人说Java比c#难,c#门槛低,说这些话的人,我觉得他不仅不了解c#,他连java都不了解,稍微有点开发经验的人,请告诉我,一个软件项目可能通过拖拽的方式开发出来吗,就算一个最小的企业网站,也是美工设计,写html,客户端js交互,服务端的代码也得一行一行的写,其实根据我的经验,.net其实要比java难学一点儿,因为.NET的架构相当庞大,java相对来说更紧凑,当然语法上的区别是很小的,因为c#的设计参照了java。如果你要学.NET的话,我分享点儿我的经验,在asp.net这一块儿不要陷的太深,对一些像玩具一样的登录控件,AJAX控件,数据源等等这些东西你可以不理他,对于迭代控件的话掌握Repeater就好,然后对他的执行原理有个基本的掌握,因为你可能会遇到一个变态的非得使用ASP.NET的上司,或者需要维护一个ASP.NET的项目,要是新开发一个项目的话,一定要使用ASP.NET MVC。他拥有web最纯正的血统,而且开发效率很高。你会发现MVC方式比那些所谓的为了提高开发效率的控件效率更高。这就是微软做什么事都把排场,大,牛x看的比较重导致的。

再说说java,在j2me方面已经死掉了,在j2se桌面应用方面从速度,性能来考虑的话也不是c++的对手,其实java和.NET的原理是一样的,都是编译为中间语言,然后在虚拟机上即时编译执行,在速度方面是没有区别的,在ui方面因为.NET有windows,所以要优于java,但是两位还是慢。java是面向对象里边最优秀的语言,并不是说他比c#好,而是他是全世界第一个创造出来这么优雅的语言,当然语言再优雅,思想上的错误也会导致他的失败,比如web方面,java在web方面其实最底层的东西很简单,很紧凑,很好。但是j2ee的思想不是很好,还有ejb的失败,导致出了很多用java程序员来说很优秀的框架,框架很多,我承认,但是是否优秀,我觉得得打个问号了。很多框架臃肿,庞杂,我不知道这是为了让java显得更加复杂,更加高深莫测呢,还是这些人比较脑残,希望你用四根筷子吃饭。比如淘宝为什么没用任何开源框架,因为太臃肿,比较死,难于扩展和维护,所以他们选择了自己开发,java的复杂其实是人为造成的。我最讨厌java中经常提到的企业级这三个字,我到现在都不明白这三个字的意思。当然j2ee新的架构进步了很多。Android的出现迎来了java语言一个新的高潮。虽然说他只是使用了java语言,但是对我们来说,他还是java。

最后是php,php是一种简单高效的解释型脚本语言,语法功能相对简单,高并发安全性方面相对比较弱,主要用于开发web项目,当然你说他也可以开发桌面,不好意思,我还没见过,你要非得开发一个,那么我祝福你。

总结一下吧,.net,java,php大多用来开发web项目,当然.net和java也可开发桌面程序,尤其.net的wpf的出现,让.net在桌面方面增色不少。语言只是一个工具而已,主要还是看你自己的喜好,和适应的场景,说白了,不管是.net,java,php,无非就是运行那么一霎那,然后输出一段html,你要是希望开发效率比较高,开发环境比较舒服,语法上更先进,那么你选择.NET,比如定义一个线程,你可以在当前的类中添加一个方法,方法中是线程要执行的代码,用java的话你要写一个类,实现个借口或继承个父类才能完成,如果你比较喜欢原始一点儿的方式,淳朴一点的编码方式,而且你也乐意多写点儿代码,愿意使用那种相比vs来说相对简陋的开发环境,那你选择java吧,还是那句话,语言只是个工具,主要看你自己的喜好,最主要的区别是windows是收费的,sqlserver是收费的,java可以使用免费的linux和免费的jboss和免费的mysql,但是你需要的是一个相对高性能的数据存储环境的话,那么oracle的价格所谓天价,而且那些收费的java容器价格也很高。php的话,只要你开发的不是一个对数据处理的安全有很高要求的比如银行或金融系统的项目,那么php是个很好的选择,他可以用完全免费的工具跑起来。

谈谈.NET,Java,php的更多相关文章

  1. 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

  2. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  3. 转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”

    转自:http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/ 面试题目: 地球人都知道,Java有个东西叫垃圾收集 ...

  4. 面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”

    面试题目:地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete.free掉,你能不能谈谈: GC是在什么时候,对什么东西,做了什么事情? 以上算是三个问题,下面 ...

  5. 顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  6. 《Java核心技术36讲》阅读笔记:谈谈对Java平台的理解笔记

    1. 谈谈你对Java平台的理解. Java是一种面向对象的语言,最显著的特性有两个方面: 一个就是一次编译,到处运行(Write once, run anywhere),能够非常容易的获得跨平台能力 ...

  7. 面试——谈谈对JAVA的理解

    谈谈你对Java平台的理解.答:Java首先是一种面向对象的语言,语言特性有封装,继承,多态,泛型,Lamda表达式等; 第二个特性:支持跨平台,一次书写导出运行(write once,run any ...

  8. 1.谈谈对Java平台的理解

    1.谈谈你对Java平台的理解 Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“一次编译,到处运行”(Compile once,run anywhere),能够非常容易地获取跨 ...

  9. 谈谈对Java平台的理解

    从我第一次接触Java的时候,老师就说"Write once,run anywhere",这句话虽然听起来有一点太过于形式主义,但是也突出了它的特点.那么,现在的我们应该总结一下和 ...

  10. 谈谈对Java中Unicode、编码的理解

    我们经常会遇到编码问题.Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为J ...

随机推荐

  1. MongoDB备份和恢复

    mongodump备份数据 该命令可以导出所有数据到指定目录中, 也能通过参数指定备份服务器 mongodump -h dbhost -d dbname -o dbdirectory dbhost: ...

  2. [Tyvj模拟赛]运

    运 题目 [问题背景]zhx 和妹子们玩数数游戏. [问题描述] 仅包含4或7的数被称为幸运数.一个序列的子序列被定义为从序列中删去若干个数, 剩下的数组成的新序列.两个子序列被定义为不同的当且仅当其 ...

  3. 6. leetcode 136. Single Number

    Given an array of integers, every element appears twice except for one. Find that single one. Note: ...

  4. Uva 122 树的层次遍历 Trees on the level lrj白书 p149

    是否可以把树上结点的编号,然后把二叉树存储在数组中呢?很遗憾如果结点在一条链上,那将是2^256个结点 所以需要采用动态结构 首先要读取结点,建立二叉树addnode()+read_input()承担 ...

  5. ASP.NET 导出excel文件出现乱码的解决办法

    string html =TABLE ;//<table>标签,可以是多张表string modified = Regex.Replace(html, "<table &g ...

  6. 找不到包含 OwinStartupAttribute 的程序集。 - 找不到包含 Startup 或 [AssemblyName].Startup 类的程序集。

    打开web.config添加 <add key="owin:appStartup" value="false" /> <add key=&qu ...

  7. MySQL之增_insert-replace

    MySQL增删改查之增insert.replace 一.INSERT语句 带有values子句的insert语句,用于数据的增加 语法: INSERT [INTO] tbl_name[(col_nam ...

  8. 27. Remove Element【leetcode】

    27. Remove Element[leetcode] Given an array and a value, remove all instances of that value in place ...

  9. [算法题] Remove Duplicates from Sorted Array

    题目内容 本题来源于LeetCode Given a sorted array, remove the duplicates in place such that each element appea ...

  10. RabbitMQ 使用(一)

    RabbitMQ中的使用 这篇文章将会介绍关于RabbbitMQ的使用,并且使用的是kombo(客户端的Python实现)来实现: 安装 如果使用的是mac安装的话,可以先安装到指定的位置,接着配置命 ...