.net, java, c/c++ 和钱

最近有一段时间没有写博客了,原因是没时间,项目需要在短时间内增加一些安全性的支持,为此我花了近两个月的时间做基础研究,现在路已经跑通了,稍闲下来,看到园子里面的一些文章,个人觉得作为一个在软件开发领域做了多年的工程师有必要说几句,让大家少走些弯路。

记得刚开始写代码的时候自己也有过纠结的时候,纠结的是如何选择,.net, java, c/c++我该学哪个,那个时候正式java强势的时候,好像大家都认为java是万能的。人都不愿意自己的学习投资浪费掉,都想学一个入流的语言,当时的网络上面也和现在一样充斥着语言之争,新手好迷茫,因为每个人都说的小有些道理。

如果在今天还有人写语言之争,我看到最想说的一句话就是:太年轻。
为什么非要有语言之争呢?你是单细胞么?主流语言之间根本就不是单选题,只有都看透了,站在一个相对高的位置才能更好的解决问题,对,没错,我说的是主流的语言都值得学习,.net, java, c/c++,python, shell..,因为对于不同的问题,不同的语言可能有其独特的优势,写代码的本质是解决问题,至于语言,那都是必修课。站在一个高的角度看编程语言只有大同小异,当然在这里我不是否认不同语言之间的差异,它们之间可能有很大的差异,以至于我们要通过学习去了解他们,但是也不至于说我们要去单选,要有你没我。

下面小谈一下差别:

.net\c# -- 由于是建立在微软COM之上,确实适合快速开发,写应用程序,原因是微软为你做的太多了,举个例子:

比如最开始C#判断系统是不是64位最开始的代码要这样写:

         static bool DoesWin32MethodExist(string moduleName, string methodName)
{
IntPtr moduleHandle = GetModuleHandle(moduleName);
if (moduleHandle == IntPtr.Zero)
{
return false;
}
return (GetProcAddress(moduleHandle, methodName) != IntPtr.Zero);
} public static bool Is64BitOS()
{
if (IntPtr.Size == )
{
return true;
}
else
{ bool flag;
return ((DoesWin32MethodExist("kernel32.dll", "IsWow64Process") &&
IsWow64Process(GetCurrentProcess(), out flag)) && flag);
}
}

但是在经过.net framework 的封装之后下面一条语句就搞定了:

Environment.Is64BitOperatingSystem

微软让生活美好多了,但是其内部的实现估计还是大同小异,这样因为微软封装了复杂性,所以可以让有些工程师可以在不太了解原理的情况向去完成工作,降低了开发难度,提高了开发效率。但是相比于java,.net的跨平台性一直是个鸡肋,相信大家在做不同的事情的时候该知道如何选择了吧。

java -- 语法上和C#大同小异,坊间流传他们之间有互相借鉴之嫌,但是java的开发门槛相对C#确实少显复杂,同样,原因还是因为微软,微软的visual studio做了好多脏活,累活,而这些在java开发是可能都要手动去配置,去选择各种应用服务器,各种框架,因为经常需要去折腾,所以java工程师可能会知道的设计模式,服务器配置方面的东西更多些,但是这些东西也都是语言无关的,看透了都一样。

c\c++语言 -- 在我看来c\c++是相对底层的语言,底层也就意味之自己需要做的事情更多,没有.net那么多的封装,也就是说要求工程师知道的相对更多,我所知道的在windows 上面用c\c++写系统软件,驱动的工程师大都也能写C#,反过来的情况不多。虽然业界鼓吹的java的跨平台性,但是我始终认为一切都是有代价的,为了跨平台,可能好多特性只能取交集,c\c++写的代码只要做相对小的移植,跨平台性也不难做到,当然我的前提是你知道自己在做什么。另外,还有一点不得不提的是用C#和java写的代码在安全性方面确实比写c\c++更容易,现在我看好多人写的c++代码,我特想去问一句, 你×××知道自己在干什么吗,别人随便写几行代码就得到你软件的控制权了,太可怕了,小伙伴们。

下面说说编程语言和钱的关系

我从来都不认为这是个绝对的关系,好多时候你能拿多少钱不是你的代码能力决定的,其他好多的软实力往往起着决定性的作用。比如语言,英语好的朋友即使技术一般也很容易找到高工资的工作,再比如,数据库,AD,OS,算法,设计模式,UML,这些软实力在特定的位置上拿高工资是很常见的事情,所以说你赚多少钱完全体现的是一个综合实力,某个单项只能加分,全面发展才是王道。

结论

高处不胜寒,学就是了,何必去管纷争..

.net, java, c/c++ 和钱的更多相关文章

  1. JAVA多线程----用--取钱问题2

    在该示例代码中,TestAccount类是测试类,主要实现创建帐户Account类的对象,以及启动学生线程StudentThread和启动家长线程GenearchThread.在StudentThre ...

  2. #Java编程题-百钱百鸡

    问题: 百钱百鸡问题.用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只). 自己的实现,没有什么数据结构,算法,求大神指点!! packa ...

  3. JAVA多线程----用--取钱问题1

    “生产者-消费者”模型,也就是生产者线程只负责生产,消费者线程只负责消费,在消费者发现无内容可消费时则睡觉.下面举一个比较实际的例子——生活费问题. 生 活费问题是这样的:学生每月都需要生活费,家长一 ...

  4. 与其争论java和.net的差别,还不如多想点用编程技术挣钱的方式

    年前和最近,我发现在博客园和其它地方,有不少争论java和.net哪个好的文章,其实这是种好现象.虽然到了架构层面,技术是通用的,但兼听则明,而且技多不压身,多种挣钱的方式总不会错. 本人最近主攻Ja ...

  5. Java微信公众号开发----关键字自动回复消息

    在配置好开发者配置后,本人第一个想要实现的是自动回复消息的功能,说明以下几点: 1. url 仍然不变,还是开发配置里的url 2. 微信采用 xml 格式传输数据 3.微信服务器传给我们的参数主要有 ...

  6. javaScript的简单学习

    JavaScript介绍 JavaScript跟java没半毛钱关系 JavaScript有三部分组成:ECMAScript,document object model,broswer object ...

  7. 浅议iOS网络数据解析

    /*------------------------------------ 数据解析: 1.JSON数据 --------------------------------*/ 重点:1.什么是JSO ...

  8. iOS开发网络篇-JSON文件的解析

    一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...

  9. 前端之DOM操作

    一.概念 javascript javascript是一种脚本语言,可以被浏览器解析,所以它可以称之为前端的三把利器之一. javascript跟java没有半毛钱关系. 声明局部变量:使用关键字va ...

随机推荐

  1. How to Install JAVA 8 (JDK/JRE 8u111) on Debian 8 & 7 via PPA

    Oracle JAVA 8 Stable release has been released on Mar,18 2014 and available to download and install. ...

  2. 用php创建mysql数据库

    接触php就等于向后台更近了一步,之前一直在做前端,不过也在学php,但一直没敢写博客,现在终于有勇气迈向了这一步,还请各位博友多多担待. 服务器是后台开发的必备工具,但对于一般初学者来说是没有自己的 ...

  3. easyui 折叠数据表格使用

    因为要用到折叠数据表格 但是官网上的例子不能展示 费了好大劲 走了很多弯路 现在能显示出数据 以前大多都是看别人写的文章 自己解决问题的时候几乎没记录过 现在想想真不是好习惯 特此记录分享出来 有需要 ...

  4. Transactional replication-如何跳过一个事务

    在transactional replication, 经常会遇到数据同步延迟的情况.有时候这些延迟是由于在publication中执行了一个更新,例如update ta set col=? Wher ...

  5. SqlServer2012 数据库的同步问题汇总

    1.当订阅由发布服务器集中管理时正常,而把这些订阅分由订阅服务器管理,在发布服务器初始化订阅时,这些订阅就会出现无法访问某地址的问题,即使添加Everyone的完全控制权限也无用. 2.SqlServ ...

  6. Chrome开发者工具不完全指南(六、插件篇)

    本篇是Chrome开发者工具的结尾篇,最后为大家介绍几款功能强大的插件.在chrome商店里面有很多插件,没事建议大家去逛逛.不过需要FQ,所以诸位请自备神器.一.皮肤插件 首先是大家期盼已久,翘首以 ...

  7. objective-c(反射)

    objective-c中提供类似JAVA的反射特性,给出基本例子如下: #import <Foundation/Foundation.h> @interface ClassA : NSOb ...

  8. 谈谈对BPM的理解

    BPM的产生缘由 近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入了信息时代,也称为数字化时代,在这数字化的时代里,企业的经营管理都受到了极大的挑战.从上世纪90年代起至今,企业的信息化工 ...

  9. 泛型实现中没有正确lock引用类型的一个隐藏bug分析

    最近看到这篇文章dotNetDR_的回复,让我想起一个真实发生的案例,下面就简单说说这个关于lock引用类型的一个不容易发现的隐藏缺陷. 某类库中的代码,封装了很简单的一个通用类,用于线程安全地执行某 ...

  10. 第十六回 IoC组件Unity续~批量动态为Unity添加类型和行为

    回到目录 之前的一篇Unity的文章主要是基本的实现,并没有什么特别的地方,使用Unity可以方便的实现应用程序的IoC控制反转,这给我们的应用程序在耦合度上变得高了,同时可测试性加强了,当然,这些的 ...