谈谈.NET,Java,php
开通博客后,一直都是转点别的朋友写的有意思的博文,今天我来写我在博客园的第一篇文章,说的不对的地方请你指正。希望本文能为一些准备学习编程的朋友有一点帮助。
开发桌面程序一直都是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的更多相关文章
- 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路
引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
转自:http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/ 面试题目: 地球人都知道,Java有个东西叫垃圾收集 ...
- 面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
面试题目:地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete.free掉,你能不能谈谈: GC是在什么时候,对什么东西,做了什么事情? 以上算是三个问题,下面 ...
- 顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 《Java核心技术36讲》阅读笔记:谈谈对Java平台的理解笔记
1. 谈谈你对Java平台的理解. Java是一种面向对象的语言,最显著的特性有两个方面: 一个就是一次编译,到处运行(Write once, run anywhere),能够非常容易的获得跨平台能力 ...
- 面试——谈谈对JAVA的理解
谈谈你对Java平台的理解.答:Java首先是一种面向对象的语言,语言特性有封装,继承,多态,泛型,Lamda表达式等; 第二个特性:支持跨平台,一次书写导出运行(write once,run any ...
- 1.谈谈对Java平台的理解
1.谈谈你对Java平台的理解 Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“一次编译,到处运行”(Compile once,run anywhere),能够非常容易地获取跨 ...
- 谈谈对Java平台的理解
从我第一次接触Java的时候,老师就说"Write once,run anywhere",这句话虽然听起来有一点太过于形式主义,但是也突出了它的特点.那么,现在的我们应该总结一下和 ...
- 谈谈对Java中Unicode、编码的理解
我们经常会遇到编码问题.Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为J ...
随机推荐
- Scrapy模拟登录知乎
建立项目 scrapy startproject zhihu_login scrapy genspider zhihu www.zhihu.com 编写spider 知乎的登录页url是http:// ...
- app请求服务器数据方法1-HttpUrlConnection
1. 实例化URL对象 首先第一步实例化一个URL对象,传入参数为请求的数据的网址. URL url = new URL("http://www.imooc.com/api/teacher? ...
- mysql5.7.18的安装与主从复制
CentOS6.7安装mysql5.7.18 1. 解压到/usr/local目录 # tar -zxvf mysql-5.7.18-linux-glibc2.5-i686.tar.gz -C /u ...
- 10. leetcode 226 Invert Binary Tree
思路:递归.先将左子树反转,再将右子树反转,然后让root->left指向反转后的右子树,root->right指向反转后的左子树.
- 设置webstorm缩写代码
文件 ->设置->编辑器->活动模板->找到需要设置的文件类型(比如JavaScript)-->添加-(右上角)->设置模板之后,注意最后需要defind才能生效
- 六、vue如何缓存页面
vue如何和ionic的缓存机制一样,可以缓存页面,在A页面跳转至B页面后返回A页面时A页面的数据还在? 在app.vue中将router-view使用keep-alive包起来,使用v-if来判断使 ...
- iOS底层学习-KVC使用实践以及实现原理
简介 KVC(Key-value coding)键值编码,顾名思义.额,简单来说,是可以通过对象属性名称(Key)直接给属性值(value)编码(coding)"编码"可以理解为& ...
- Numpy 操作
一.Numpy 属性 # 列表转化为矩阵 In []: arr = np.array([[,,],[,,]]) In []: arr Out[]: array([[, , ], [, , ]]) 1, ...
- There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
解题思路:合并两个数组,创建一个 Map对象,用以存放排好顺序的键值对,键为序号,值为数组值,中位数的结果分两种情况讨论: 1.m+n为奇数:(m+n)/2为中位数 2.m+n为偶数:(((m+n)/ ...
- Open-Falcon第一步环境准备(小米开源互联网企业级监控系统)
1.环境安装 本文采取rpm安装方式,大家也可以用源码包安装. wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release- ...