【玖哥乱弹】编程语言间的斗争

2023-05-16

在初级程序员阶段,每个人都不可避免遇到选择编程语言和职业方向的难题。我挑选了几个常见的编程语言,分析了优缺点和职业方向,以供想当程序员的人参考。

C/C++

一句话概括:大多数中国程序员的第一个语言

C语言是面向过程语言在当代的鲁殿灵光,常用于编写操作系统。C++C语言的一个超集,既有指针又有对象使它成为最复杂的语言。

 

C/C++的优势:几乎所有现代编程语言都脱胎于C/C++,因此了解了C/C++,就了解了关于编程语言的一切,非常有利于快速掌握其他各类编程语言。

C/C++的不足:据说C/C++发明的时候为了提高入行门槛和行业收入水平刻意制造了学习难度。

 

C/C++的优势:C/C++可以被嵌入任何现代处理器中,几乎所有操作系统都支持C/C++,跨平台性非常好。

C/C++的不足:尽管C语言体型小巧,可最常使用的C++规模可观且拥有大量极为复杂的功能交互方式,容易造成资源浪费。

 

职业路线:

(1)首推Unix/Linux等操作系统软件的开发和嵌入式开发。

2Android ROM的定制,以及Android AppNDK开发。

3)用Cocos2d-x开发游戏也是C++程序员的好出路。

 

Java

一句话概括:最长寿的语言

Java是最典型的面向对象语言。Java不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是Java的同龄人(1995年)。

 

Java的优势:Java平台不断迎来新功能,比如移动互联网时代的Android,大数据时代的Hadoop,人工智能时代的TensorFlow

Java的不足:国内Java及其衍生技术的就业环境被培训班破坏得太厉害,培训班HR曾问我:“Android不吃香了,你能推荐几个Hadoop讲师吗?”

 

Java的优势:Java是世界上使用范围最广的语言——Java环境安装时那句“3 Billion Devices Run Java”谁没见过?

Java的不足:Java占用大量内存,并且启动时间较长——搞Android的都被Windows系统中的Android AVD坑过。

 

职业路线:

1)招聘网站上常见的“招聘Java开发”指的就是狭义的Java开发——基于JavaEE的后台开发,以前一度流行过SSH框架和SSM框架,现在入门建议学习SpringMVC框架。

2)在移动互联网时代,Java可用于Android App开发。但Java之于Android的地位可能被Kotlin取代,并且近年培训班造成了低水平Android程序员的泛滥。

3)在大数据时代,Java可用于Hadoop的开发,前景非常广阔,但可能有泛滥的趋势。

4)在人工智能时代,Java可用于TensorFlow深度学习的开发。

 

C#

一句话概括:自称不是JavaJava语言

C#是微软看到Java太火了而发明的和Java语法差不多的语言。

 

C#的优势:C#的最大优势在于全面集成.Net库,提供出色的功能与完美的库访问能力。

C#的不足:由于集成.Net库造成跨平台能力太差。

 

C#的优势:VR时代的到来让Unity-3d开发者有很好的发展前景。

C#的不足:目前.Net在国内就业环境不太好,收入较低。

 

职业路线:

1)招聘网站上常见的“招聘C#开发”和“招聘.Net开发”指的都是狭义的C#开发——基于.Net框架的后台开发。

2Unity-3d也用C#作为开发语言,除了能开发3D游戏,在VR时代也会大放光芒。

 

JavaScript

一句话概括:不是Java语言的语言。

JavaScript是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给HTML网页增加动态功能的语言。外行最常闹的笑话是以为它是Java语言的分支。

 

JavaScript的优势:作为脚本语言,JavaScript可立即运行而无需等待服务器响应,速度非常出色。

JavaScript的不足:代码在用户电脑上运行,可能会被别有用心的坏人恶意利用。

 

JavaScript的优势:JavaScript是动态类型语言,学习难度低。并且掌握了JavaScript语言就等于成为能同时开发网页(HTML5)、后台(Node.js)、移动端(React NativeWeex)的全栈工程师。

JavaScript的不足:JavaScript过于依赖浏览器,在不同的浏览器上有不同的表现。

 

职业路线:

1)首选HTML5的初心:网站和手机站的前端页面开发。

2)用Node.jsBmob云端代码进行后台开发

3)基于React NativePhoneGapWeexHBuilderAppCan进行移动开发,只需写一遍代码,就有AndroidiOS两个软件

4)微信开发:包括微信公众号、微信小游戏、微信小程序。不要把这个方向当成中国特色方向,国外的Android机也是需要PWA开发的。

5)如果以上四样全能做到,那么你就是全栈工程师。

 

SQL

一句话概括:数据库离不开的语言

SQL是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。

 

SQL的优势:存储过程可以重复使用,可减少数据库开发人员的工作量,开发速度快。

SQL的不足:和Java语言的大多数设计模式一样,SQL开发速度是靠牺牲运行速度换来的。

 

SQL的优势:SQL可设定只有某此用户才具有对指定存储过程的使用权,安全性好。

SQL的不足:不同数据库系统之间的SQL不能完全相互通用,可移植性差。

 

职业路线:

1)掌握了SQL可以从事DBADatabase Administrator,即数据库管理员),主要负责业务数据库从设计、测试到部署交付的全生命周期管理。

 

Python

一句话概括:需要拿着游标卡尺学习的语言

Python是一款服务器端解释型开源非编译脚本语言。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

 

Python的优势:Python学习简单,被誉为“最易学习的语言”

Python的不足:Python存在一些只在特定情况下才会出现(无法重现)的bug

 

职业路线:

1)用Django框架进行Web开发:和Java没什么两样。

2)用PIL框架进行图形处理

3)物联网:Raspberry Pi等物联网平台都选择了Python作为开发语言

4Python有一个无所不能的Hack库,如果认为“打工时不可能打工的”就去当一个自由的黑客吧

 

PHP

一句话概括:世界上最好的语言

PHP是一种通用开源脚本语言。语法吸收了C语言、JavaPerl的特点,利于学习,使用广泛,主要适用于Web开发领域。号称“世界上最好的语言”

 

PHP的优势:PHP学习简单,易于快速上手。

PHP的不足:PHP的运行速度比较慢。

 

PHP的优势:历久弥新的PHP拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义。

PHP的不足:PHP的错误处理机制比较糟糕,以为PHP需要支持大量旧版本的功能。

 

职业路线:

1)适合进行Web开发,配合Node.js效果更佳。

 

Objective-CSwift

一句话概括:被培训班害苦了的语言

Objective-CSwift都是OS XiOS系统上的专用语言。Objective-C在三年前是国内收入最高的语言,从去年开始大量培训班输出了一大堆“三年经验”的速成“iOS工程师”成了脉脉匿名区的笑话。

 

Objective-C的优势:苹果提供了丰富的工具和库以便开发者使用Objective-C开发软件。

Objective-C的不足:Objective-C拥有自己独特的编程方法思路,与其他编程语言思路差别较大。

 

Swift的优势:随着时间推移,SwiftiOSOS X软件中占的代码比例会越来越多。

Swift的不足:版本更迭太快,不同版本差别过大,近年发生过几次“从精通到重新入门”的情况。

 

Objective-CSwift的优势:因为仅需要在少数平台上运行,不容易遇到兼容性问题。

Objective-CSwift的不足:这俩语言的就业环境被培训班彻底毁了,现在才开始学这两种语言可能会有像20076000点时入市的散户的结局。

 

职业路线:

1)这两种语言都是专为iOSOS X服务的,入行前记得先准备一台苹果电脑和苹果开发者账号。近年培训班造成了低水平Objective-CSwift程序员的泛滥。

 

Kotlin

一句话概括:运行在JVM但不是Java的语言

Kotlin 是最新问世的一个基于JVM的编程语言,专用于开发Android

 

Kotlin的优势:和Java的互操作性极佳。其他JVM语言都实现了自己语言的标准库。而Kotlin则使用Java的标准库,只是对其进行了扩充。更轻巧,Apk更小。

Kotlin的不足:同时可能也继承了Java比较坑爹的东西。

 

Kotlin的优势:因为弱化了数据类型,学习成本较Java低。

Kotlin的不足:能且仅能在Android Studio 3.0上运行,这点有点像易语言。

 

职业路线:

1)只能用来开发Android。即使你想干点别的,除了Android Studio 3.0 还有别的编译器吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【玖哥乱弹】编程语言间的斗争 的相关文章

  • 骰子的游戏(牛客练习赛7)

    题目链接 https www nowcoder com acm contest 38 A 解题方法 枚举 AC代码 include lt stdio h gt const int maxn 61 10 43 5 int a maxn b m
  • C - Shopping Street(AtCoder Beginner Contest 080)

    题目链接 https beta atcoder jp contests abc080 tasks abc080 c 解题方法 因为一共只有十个时期所以我们可以枚举所有的状态 xff0c 又因为必须有1个时期开放 xff0c 所以我们从1而不
  • 经典OJ推荐

    转载自http acdream info topic tid 61 101 一 Online Judge简介 Online Judge系统 xff08 简称OJ xff09 是一个在线的判题系统 用户可以在线提交程序多种程序 xff08 如
  • 安装Tomcat(win10)

    引论 做web项目已经是一个很常见的事情了 xff0c 而我们完成后的web项目要想发布除了硬件的服务器外还需要相应的服务器软件 xff0c 而Tomcat就是一款web应用服务器 尽管因为Nginx xff08 它的性能是Apache服务
  • org.hibernate.InstantiationException: No default constructor for entity: cn.gov.entity.Book

    出错地方 xff1a org hibernate InstantiationException No default constructor for entity cn gov entity Book 出错原因 xff1a hibernat
  • 牛客练习赛8 D加边的无向图

    题目链接 https www nowcoder com acm contest 39 D 解题思路 利用并查集查找一共有几个独立的集合 xff0c 最后需要的最少边为集合个数减一 AC代码 include lt stdio h gt inc
  • 解决getHibernateTemplate().save ()不能将数据保存到数据库的问题

    原文出自http blog csdn net justerdu article details 50893583 分析 xff1a 数据是保存在缓存中而未提交到数据库中 解决办法 xff1a 在hibernate cfg xml里面加入 h
  • 输入ctrl s终端冻结怎么办

    原文出自http www xshellcn com zhishi sr ztd html 大家有没有发现每当输入ctrl s 就暂停该终端 让人着急万分 xff0c 我相信这是很多xshell的用户都会遇到的一个问题 xff0c 那应该怎么
  • java大数详解

    引论 在算法竞赛中我们经常遇到大数问题 xff0c 例如求一个很大的斐波那契数 住在这种情况下我们用常规解法 xff08 使用long long或long long int xff09 肯定是不行的 xff0c 而我们自己写一个大数的算法又
  • ACM数论模板及应用

    引论 数论是算法竞赛的宠儿 xff0c 几乎每个算法竞赛 xff08 不论是ACM的省赛 区域赛还是牛客网上的网络赛 xff09 都会出一道关于数论的题 这很容易理解 xff0c 因为算法与数学的关系极其密切 xff0c 也可以说算法拼到最
  • 深度神经网络的应用

    深度学习能应用在哪些领域 xff1f 深度学习的快速发展 xff0c 不仅使机器学习得到许多实际的应用 xff0c 还拓展了整个AI xff08 人工智能的 xff09 的范围 它将任务进行拆解 xff0c 使得各种类型的机器辅助变成可能
  • <操作系统>读者写者问题(写者优先)C语言实现

    问题描述 代码 span class token macro property span class token directive keyword include span span class token string lt stdio
  • 二叉树的节点个数以及高度详解(附图解)

    二叉树的节点个数以及高度 文章目录 二叉树的节点个数以及高度前言NO 1 定义链式二叉树NO 2 创建二叉树一 二叉树节点个数1 代码展示2 递归图解 二 二叉树叶子节点个数1 代码展示2 递归图解 三 二叉树第k层节点个数1 代码展示2
  • 使用Github Desktop轻松进行版本管理

    引论 现在git已经成为了主流的版本管理软件 xff0c 然而是不是有一些一看到命令行就头痛的初学者 xff08 比如我 xff09 呢 xff1f 不过好在有着各种各样的图形界面软件可以帮助我们摆脱这一烦恼 xff0c 就比如说githu
  • Leetcode 100. Same Tree

    分析 这道题算是一道关于树的简单题 xff0c 我们需要判断给出的两棵树是否相等 xff0c 分为三步 xff0c 判断当前节点是否相等 xff0c 判断左右子树是否相等 要特别注意一下为NULL的情况 我的代码 span class hl
  • Python小程序之文件清理机

    背景 作为一名Acmer我写了很多 cpp文件 xff0c 其中经过编译 链接后又生成了许多 exe和 o文件 当我用github desktop将他们同步到我的github上是 exe和 o文件很碍事 xff0c 尤其是 exe文件占用的
  • hdu1076

    题目链接 An Easy Task 解题思路 题目要求给出一个年份Y和一个整数N xff0c 输入从Y年起第N个闰年 首先我们容易知道我们需要判断一个年份是否是闰年 xff0c 我们可以把它封装成一个函数 xff0c 这样可以方便我们下次调
  • 牛客练习赛12 B迷宫解题报告

    一切尽在代码中 include lt stdio h gt include lt string h gt include lt queue gt include lt algorithm gt using namespace std con
  • 利用并查集维护两个对立集合

    在并查集的实际应用中 xff0c 我们经常遇到下列这种情况的题目 当满足 1 x xff0c y为不同集合的元素 2 x xff0c z为不同集合元素 时 xff0c y xff0c z为相同集合的元素 如何来描述这种不同集合元素的关系就是
  • HDU - 3018解题报告

    题意简述 给出n个节点 xff0c m条边 xff0c 问要想全部经过这m条边且每个边只经过一次至少需要多少条路径 分析 这个题实际上就是一笔画问题中的定理二 xff1a 如果连通无向图 G 有 2k 个奇顶点 xff0c 那么它可以用 k

随机推荐

  • 手把手教你申请企鹅号

    引论 随着互联网时代的兴起 xff0c 自媒体越来越引人注目 笔者周围已经有了不少人开始做自媒体而且还做的顺风顺水 笔者也有些按捺不住 xff0c 寻思着要做自媒体的生意 xff0c 可是转念一想 xff0c 独赚钱不如众赚钱 xff0c
  • UVA818解题报告

    span class hljs comment UVA 818 理解了题意和水题差不多 条件 xff1a 一些可能相同的无向边 要求 xff1a 构建一个满足如下三个要求的图 一 不能有环 二 连成一条直线 三 所有节点要连在一起 操作 x
  • PAT1003 Emergency (25)

    引论 本以为这是一道水题却因为考虑不周WA了半天 xff0c 参考了博客https blog csdn net tiantangrenjian article details 19434417 感觉这题还是蛮不错的 题目链接 https p
  • 操作系统知识点整理

    1 进程的有哪几种状态 xff0c 状态转换图 xff0c 及导致转换的事件 进程的状态 xff1a 运行 阻塞 就绪三种状态 运行和就绪之间的转换由调度程序引导 xff1b 当进程等待一个外部事件发生时 xff0c 则由执行 阻塞 xff
  • uva417

    挺有意思的一道题 迭代深搜 43 二分 实际上根据笔者测试 xff0c 使用迭代深搜打表后直接用暴力枚举也可以通过 xff0c 但如果测试用例T的范围开到1e5在极端情况下就会TLE xff0c 但是UVA的测试数据显然没有这样的 xff0
  • hiho一下 第216周

    分析 这道题挺不错的 xff0c 巧妙的运用到了优先队列 首先 xff0c 因为n个点是确定的 xff0c 所以我们可以得到n 1个区间 xff1b 其次 xff0c 因为还有k个点是不确定的 xff0c 所以我们把这k个点依次插入到这n
  • Cisco packet tracer模拟器基本配置命令

    引言 计算机网络是门实践性很强的学科 xff0c 如果不自己动手做一些实验的话是根本学不好的 我这里的学好是指真正掌握计算机网络的工作原理以及一些常见的网络设备的使用方法 xff0c 而不是期末考高分或者水过一个什么证书 但是通常情况下我们
  • Wannafly挑战赛24A题

    span class hljs comment 题目链接 xff1a https www nowcoder com acm contest 186 A 分析 xff1a 奇数x分为 xff08 1 xff0c x 1 xff09 时为最优解
  • @ControllerAdvice注解作用及源码解析

    一 概述 在Spring里 xff0c 我们可以使用 64 ControllerAdvice来声明一些全局性的东西 xff0c 其用法主要有以下三点 xff1a 1 64 ExceptionHandler注解标注的方法 xff1a 用于捕获
  • 用Android的Activity生命周期解释HarmonyOS的Page Ability生命周期

    由华为出品 我国完全自主知识产权的HarmonyOS是一款 面向未来 面向全场景 xff08 移动办公 运动健康 社交通信 媒体娱乐等 xff09 的分布式操作系统 现已于2020年9月10日开源 xff0c 并面向应用开发者发布Beta版
  • 宗师级Linux 系统管理员的倾囊相授——《Linux命令行与shell脚本编程大全(第4版)》

    信息安全 早已上升为国家战略 xff0c 发展自主可控的国产操作系统迫在眉睫 为了满足国防 公安等涉密领域对操作系统平台的安全需求 xff0c 国防科技大学研制了以操作系统技术为核心 xff0c 安全可信为特色的中标麒麟 xff08 Ubu
  • Java语言的极限,就是面向对象的极限——《On Java中文版》

    自从1995年问世以来 xff0c Java已经发展成了全世界使用范围最广的语言之一 xff0c 每天都有30亿台运行Java的设备活跃在这个世界上的各个角落里 世界上大多数网站的后台使用Spring开发 xff0c 而Spring开发者必
  • 做后台开发用到的技能都在这儿——《后台开发:核心技术与应用实践》

    大多数面向对象语言没有指针的概念 xff0c C语言也没有对象的概念 xff0c 同时具有指针和对象的 C 43 43 语言在学习时有高昂的门槛 xff0c 同时在服务端后台开发 处理多并发的海量网络请求等方面有天然的优势 就像 Andro
  • Android Canvas 多张图片拼接成长图

    容我慢写
  • matplotlib里的动画

    本文由Mathematrix译自由Jake Vanderplas撰写的Matplotlib Animation Tutorial Matplotlib 1 1 版新添加了一些非常帅的用来制作动画的工具 xff0c 你可以在Matplotli
  • Android Canvas 给图片加上水印

    容我慢写
  • 我做面试官的故事

    2016年就要过完了 xff0c 我入行也快三年了 三年来被人面试过也面试过人 xff0c 我来给大家分享一下我面试别人的两个有趣经历吧 xff1a 1 有一天我穿着环信的T恤 xff0c 前胸是一个巨大的环信logo xff0c 后颈是环
  • 给CheckBox加上动画

    容我慢写
  • Android程序员的十大转型之路

    IT行业是一个瞬息万变的行业 xff0c 程序员是一个不进则退的职业 我作为一个Android程序员 xff0c 多年来一直保持随时可以转型其他技术领域的状态 xff0c 保持对新技术敏感的嗅觉 我先说说Android程序员不可能转型的几个
  • 【玖哥乱弹】编程语言间的斗争

    在初级程序员阶段 xff0c 每个人都不可避免遇到选择编程语言和职业方向的难题 我挑选了几个常见的编程语言 xff0c 分析了优缺点和职业方向 xff0c 以供想当程序员的人参考 C C 43 43 一句话概括 xff1a 大多数中国程序员