每个程序员都该学习的5种开发语言

我曾在某处读到过(可能在《代码大全》,但我不敢确定),程序员应该每年学习一门新的编程语言。但如果做不到,我建议,你至少学习以下5种开发语言,以便你在职业生涯有很好的表现。

每个公司都喜爱精通多种编程语言并且多才多艺的程序员。一个既能很麻利地写脚本,也能编写复杂的Java程序的程序员,确实相当有价值。所以实际上,对于高级开发者来说,学习不止一种编程语言,几乎就是必然的要求。

目前而言,面试官越来越看重那些拥有多种编程语言经验的工程师。比如,同时有C++ 和Java的经验就很不错,Python和Java也是。我个人喜欢那些在C++ 或者Java方面有着丰富经验,而且能用Groovy、Perl或Python写脚本的软件工程师。

很多时候,写一个小脚本就足以快速搞定一些专有任务。我不想我的程序员们花上一整天用Java去写一个读取CSV文件的程序,或者在TCP/UDP端口抓取信息的程序,这是很浪费时间的一件事情。

为什么我在文章中选择这5种语言呢?我的理由简单且实际。我是基于这些语言的用途、编程范式和流行度及代表性来选择的。

例如,如果你想找一份应用开发的工作,就不能忽视Java。同样,做与web相关的事情,就得知道无处不在的JavaScript。

在开发者职业生涯的早期,我强烈建议学习C语言。它能帮助开发者贴近系统底层,知晓那些编程的关键概念,这是隐藏在JVM或CLR底下的东西。

对于脚本语言,我的选择是Python,尽管你也可用Perl或Groovy代替。但在扩展支持方面来看,Python的表现无疑是最棒的。有很多Python模块可供选择,帮你能分分种搞定各种任务。

学习一种面向对象的语言的同时,也学习一种像Haskell或Scala这样的函数式编程语言,这能拓展你的思维和编程认知。你可以在本文找到学习这5种语言的更多理由。

言归正传,下面就是我列出的5种每个程序员或软件开发者都该尝试学习的编程语言。

它包含了语言的大杂烩,比如[面向对象的]语言(http://javarevisited.blogspot.sg/2013/06/5-must-read-books-to-learn -object.html),函数式的语言,脚本语言,提供了对底层的控制,也涵盖了广泛用于服务端开发的语言。

1. Java

Java是近二十年来最流行的语言之一。它统治着全球的服务端应用开发,同时在基于Anroid开发的移动应用和游戏市场,以及企业web开发领域,也占有相当一部分比重。

Java最初的构想是一次编写各种平台均能运行(write once run anywhere)。随着时间的推移,它确实做到了运行在各个平台的各个角落。

你应该学习使用Java构建健壮的、可扩展的服务端应用。你可以用Java构建多种复杂度的工程。与之相伴的,有很棒的工具、技术和社区支持。

为什么你应该学Java呢?你会学到如果专注于应用层面和代码结构的设计,而不用关心特定系统的细节和内存管理。JVM帮你搞定了后面这些。

如果你已经决定开始学习Java了,那么Udemy上的 The Complete Java Master Class 教程就很棒,用它作为入门教程很好,它包含了Java的所有核心概念,很详细。

顺便一提,如果你想要更多选择,而且不介意使用免费的课程学习,那可以看看这上面给新手提供的课程。

Java被许多世界上的大型组织所使用。而且能够向众多用户展示你用Java开发的Android应用。如果你仍然还在动摇,我建议你去这看看10个学习Java的理由。

2. Python

在全球范围的学校和院系,Python是教授最多的语言之一。在美国,许多学术课程中,Python已经取代了Java成为接触编程的首选语言。你将从学习Python中得到什么呢?——那将非常多。

Python既能用于写脚本,也能作为一种面向对象的语言编写大型工程。

许多流行的网站,比如Reddit,就使用基于Python的框架来构建,比如Django。近段时间,许多大型组织也转向使用基于Python的框架了。

Python也越来越多地用于像机器学习、人工智能、数据科学这样的新一代技术中。这也难怪,因为有基于Python的非常棒的机器学习库,比如TensorFlow、Scikit-Learn以及其他。

我个人倒是在用Python写脚本。这能很快地完成一些有用的事情,比如,你可以用Python花5分钟写一个UDP消息的监听器,相比较,用Java可能就要花20分钟。忘掉“编译、打包,然后才能使用”这些步骤。你可以直接为特定任务编写Python脚本。如果你有兴趣学习Python,那么The Complete Python BootCamp就是个很好的开始。

如果你需要更多选择,而且不介意使用免费的课程学习,那也可看看这上面给新手的课程。

并且,如果你困惑于不知道该从Java还是Python开始,看看这个,它比较了两者。

另外,如果你仍然没有被我说服,那就可以看看我的关于10个学习Python理由的文章。

3. JavaScript

你可以用Java替代C++,用Python替代Ruby,但是,坦率地讲,当前没有JavaScript的替代品。在最近5年,JavaScript完全统治了世界。

它不再仅仅是客户端脚本语言。有了Node.js这样的库,和Angular、React这样的框架,你可以在服务端做用户界面的开发。

JavaScript的巨大成功,有一部分要归功于jQuery。它真正改变了人们在客户端使用JavaScript的方式。

作为一个在工作中使用JSP和开发基于Servlet的应用的程序员,我有许多机会同时使用jQuery和JavaScript。

有了此语言的知识,可以帮助我们决定哪些功能应该在服务端实现,哪些该在客户端实现。比如,许多服务端的校验逻辑,就被我们迁移到了客户端。

如果你想从头开始深入学习JavaScript,那Udemy上的The Complete JavaScriot就是你可加入的最佳在线课程。

如果你想要更多选择,且不介意跟着免费的课程学习,那么可以看看这里为web开发者提供的课程。

4. C 和/或 C++

如果不知道C或C++,你就不能成为真正的程序员。这听起来有点苛刻,但是我的经验之谈。

了解C的工程师或者开发者,就是比不了解C的程序员要优秀。这可不是简单的巧合。

这是你必须要了解的编程语言之一。我在求学期间学习的C语言,并在那时学到了关于编程的许多关键概念,比如结构体、数组、指针、内存管理等等。

C仍然是操作系统编程方面最受欢迎的语言,并且在这两年,给排名榜首的Java带来了强劲地冲击。如果你想学习这门美妙的语言,那C Programming for Beginners就是个很好的开始。

它同样是最古老的主流语言之一,已经存在了四十多年。

C++ 和C很像,都允许你为系统和驱动编写底层代码。如果你想学习C++ 而不是C,可看看我为新手列出的免费C++课程。

5. Scala

Scala是基于过去20年来的最佳实践而创造的语言。它是一种函数式编程语言,提供了一种跟面向对象语言不同的编程范式。这能改进你的思维和代码认知。

虽然有许多函数式编程可供选择,比如Haskell。我选择Scala,因为作为一名Java开发者,我发现学习Scala比Haskell更容易。

有人也可以把学习Haskell当作一个挑战。但是从实际的角度讲,我认为学习Scala对于Java开发者来说更有意义。

对于C++程序员,学习Haskell可能更合理。坦率讲,你可以选择任何一门函数式编程语言,但请选择一门有商业需求的比较好。

作为一名职业开发者,我倾向于把时间投资在那些对我的职业有帮助的事情上。如果你想学习Scala,那么Beginning Scala Programming是个很好的入门课程。

无论你学习了多少种编程语言,你需要遵从Bob Martin在《代码整洁之道》给出的编码和设计原则,才能成为一名专业的程序员。它是在你的编程职业生涯能给与你最大帮助的技能。

以上所有清单的内容,列出了每个软件工程师都该学习的5种编程语言。你们中有些人可能已经发现了,这是Java开发者应该学习的5个编程语言。也正是如此。

学习能提供不同编程范式的语言,是提升编码技能的最佳途径。它能帮你有效地解决日常任务。

理想情况下,一个程序员的工具集里,应该包含一个接近底层系统的语言,比C或C++;一个面向对象的语言,比如Java,Python或C++;一个函数式编程语言,比如Scala或Haskell;一个强大的脚本语言,像Perl、Python、Ruby和JavaScript。

结语

最后,感谢各位阅读这篇文章。如果你喜欢这些编程语言,请与你的朋友和同行分享。

如果你有任何问题或反馈,或其他任何你认为什么编程语言也应该值得每个程序员都应该学习,也欢迎发在评论区和我们分享。

文章转载自:葡萄城技术团队

原文链接:https://www.cnblogs.com/powertoolsteam/p/11016862.html

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302087.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】数据结构中应用题大全(完结)

自己在学习过程中总结了DS中几乎所有的应用题,可以用于速通期末考/考研/各种考试。很多方法来源于B站大佬,底层原理本文不做过多介绍,建议自己研究。例题大部分选自紫皮严书。pdf版在主页资源 一、递归时间/空间分析 1.时间复杂度的分析 设…

润和软件HopeStage与永中Office完成产品兼容性互认证

近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与永中软件股份有限公司(以下简称“永中软件”)永中Office办公软件完成产品兼容性测试。 测试结果表明:企业级通用操作系统HopeSta…

2023量子科技十大人物(团队) | 光子盒年度系列

今年,是量子科学与技术的又一个丰收年,学术研究团体和科技公司纷纷庆祝在量子计算、量子通信和量子计量学以及基础量子科学方面取得的重大成就。面对如此多令人兴奋的进展,我们不能不为这些进展庆祝——而所有这些的一切,都离不开…

如何编写高效的正则表达式?

正则表达式(Regular Expression,简称regex)是一种强大的文本处理技术,广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践,帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…

为什么网络安全从业者都考CISP-PTE

网络an全从业者考取CISP-PTE证书的原因👇 1️⃣高度认可 💎CISP-PTE证书是中国信息an全测评中心认证颁发,是国家对信息an全人员资质的zui高认可,具有很高的含金量。 对于网络an全从业者来说,可以证明自己具备规划测试方…

【python、pytorch】

什么是Pytorch Pytorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能。作为Numpy的替代者,向用户提供使用GPU强大功能的能力。做为一款深度学习的平台,向用户提供最大的灵活性和速度。 基本元素操作 Tenors张量:张量…

企业如何选择可靠的文件传输软件?曝光6招内行方法

随着企业内部对于文件传输需求的增加,原先传统的传输方式逐渐不再适合传输要求,无论是内部协作还是外部合作,企业都需要高效、安全、稳定的文件传输软件来支持业务的顺利进行。 然而,市面上的文件传输软件众多,不同的软…

redis数据结构源码分析——string

前面的文章大体讲解了redis的几种数据类型,针对设计表巧妙的数据类型,后续会出几篇文章单独讲解下,那么本篇文章针对string的源码进行讲解。 文章目录 字符串的三种编码sds结构sds的设计思想和优势sds API解析sdsnewlen(创建字符…

Linux源码解读

Linux内核源码是一个开源的操作系统内核,由著名的开发者林纳斯托瓦兹(Linus Torvalds)于1991年在芬兰赫尔辛基大学发布。Linux内核的源代码由一系列的C语言程序文件组成,这些文件包含了操作系统内核所需的所有功能,包括内存管理、进程调度、文…

嘴尚绝:卤味市场未来发展潜力无限,谁将成为下一个风口?

随着人们生活水平的提高,卤味作为一种美味的小吃,越来越受到消费者的喜爱。在餐饮市场上,卤味市场也呈现出越来越繁荣的景象。那么,卤味市场未来发展如何呢?今天,我们就来探讨一下这个问题。 一、消费升级推…

【漏洞复现】Hikvision SPON IP网络对讲广播系统存在命令执行漏洞CVE-2023-6895

漏洞描述 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。Hikvision Intercom Broadcasting System 3.0.3_20201113_RELEASE(HIK)版…

【Vue3】2-3 : 选项式API的编程风格与优势

本书目录:点击进入 一、选项式API - 三大优势 ▶ 只有一个参数,不会出现参数顺序的问题,随意调整配置的位置 传入的是一个对象,没有参数顺序问题 对比反面教材: ▶ 非常清晰,语法化特别强 ▶ 非常…

轨迹合并 合并轨迹

搜索微信小程序 merge gpx

Vue3-44-Pinia- 安装步骤

介绍 本文介绍 在 vue3 中 安装 Pinia 的步骤 安装步骤 1、npm 安装 npm install pinia》 安装完成后可以看到 package.json 中添加了 pinia 的依赖信息 2、main.ts 中配置 // 引入 vue实例创建方法 import { createApp } from vue// 引入pinia import { createPinia } fro…

Linux查找命令@which、find

目录 which概念语法作用 find概念语法按文件名查找按文件大小查找 作用演示一演示二演示三 通配符 总结 which 概念 which 是一个常用的 Linux/Unix 命令,用于查找并显示指定命令的绝对路径。 语法 which 要查找的命令 》无参数。 》 which后面,跟要查…

使用Adobe Acrobat Pro DC给pdf文件填加水印

前言 GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。 如果调用官方的GPT4接口,就可以按使用量付费,用多少付多少,而且没有3个小时内只能提问50条的使用限制。 但是对很多人来说调用接口是比较麻烦…

Windows本地部署WampServer环境并实现远程访问服务界面

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…

Cocos Creator 3.8 开发2D水面波纹Shader

使用cocos Creator 3.8做了一个游戏开中常用的2D的波浪水面,把技术点给记录一下,并提供完整的Shader代码。先上效果: 添加图片注释,不超过 140 字(可选) 2D 波浪的基本技术原理 2D 水面波纹的主要原理就是给定一个正选波的边界&…

1.框架介绍项目环境配置与项目启动!

目录 1.框架开发方向:2.项目启动与环境搭建 1.框架开发方向: 1.前后端分离项目 2.纯后端项目 3.移动端开发uni-app(ios、Android、H5、微信小程序) 4.内容管理系统2.项目启动与环境搭建 1.安装node.js 下载地址可以用nvm安装 便于运行前端项目https://blog.csdn.net/qq_58647…

Android Studio安卓读写NFC Ntag标签源码

本示例使用的发卡器&#xff1a; https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.3513789erHXVGx&id615391857885 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout x…