我的“第二”编程语言

原创 2017年12月25日 00:00:00

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


我们是程序员,但我们不必只是某一门语言的程序员。

编程语言

今天跟大家聊聊编程语言这个东西,“第二”只是个泛指,想必多数开发者也都掌握了不止一门编程语言。

我真正开始编程是在大四实习的时候,开发主要用的是Java,Web方向。但那会公司比较小,既要学着写后端又要学着写前端,所以JavaScript用的也算熟悉。但在那会的我看来,这两者并没有太大差别。也没有太多关于面向对象、函数式这些编程范式的概念。后来我开始做Android,对Java和面向对象编程的理解日益加深。

后来我接触到了爬虫,从正则表达式到jsoup,再后来我开始用Python来写。对于Python,用的越久,我对它越是喜欢。Python的代码总是看起来很像伪代码,可以用很少的代码实现我们想要的东西,爬虫、数据分析、网站、脚本,都可以用Python轻易实现。

随着学习的深入,我开始思考我学过的编程语言们。它们有的大开大合,有的简洁明快,有的深沉厚重。它们有解释型和编译型之分,也有无类型、强类型、弱类型、动态类型和静态类型的区分。编程范式也各有不同,命令式、函数式、面向对象等等。但它们也有相同的部分。所以,用合适的编程语言去做它适合的事情。

我的小确幸

我庆幸自己遇到我熟悉的那些编程语言们,他们带给了我很多。

先说我的老朋友,Java。Java是我最先用熟的编程语言,也因为对Android的喜欢,Java是我使用时间最长的编程语言。我更多的是用它来写一些好玩的App,好玩的动画效果,当然也靠它吃饭。

然后是JavaScript,靠着它我做了一些小东西,比如我的主页,我的blog,我的瞎编名人名言motto。靠着它我做了一些工作之外的,我喜欢的东西。

最后说说Python。用Python写的最多的是爬虫,比如我比较喜欢看小说,我用Python爬了N多本某网站的5星小说。在工作中也有一些特殊的场景需要用到爬虫的小知识,如果想偷懒的话。我维护blog的脚本也是用Python写的。偶尔我也会用Python做一些简单的数据处理和分析。Python在工作上和工作之外都帮了我很多。

和编程语言做朋友

我不是某种语言的死忠粉,比如不会高呼“PHP是世界上最好的语言”,对我有用的我都可以去学。学的编程语言越多,越能快速的学会其他任意一门新的编程语言。

之前同事推荐过一本书叫《代码之髓》,这本书从编程语言的衍生发展以及主流编程语言之间的对比等角度梳理了编程语言的“特性”,这些特性通常是所有编程语言必须的,不管是编译型还是解释型,也不管它是动态类型还是静态类型。王垠也在如何掌握所有的程序语言中讨论过这个问题。

通常在我们学习一门新的编程语言的时候,更多的应该去关注这些“语言特性”:

  • 变量以及运算

  • 流程控制

  • 函数

  • 作用域

  • 类型

  • 容器和字符串

  • 错误处理

  • 并发

  • 垃圾回收

  • 编程范式

我们应该关注编程语言对这些特性的实现,然后对比我们已经学过的其他语言。

拿Java和Python的面向对象来讲,首先我们要关注这两门语言各自对面向对象的定义以及各自的规则。然后可以对比一下它们的不同。比如如果我们要实现一个可以显示内容的窗口,同时希望这个窗口具有可滚动的特性。在Java中,我们一般会定义一个窗口类,然后定义一个具有滚动特性的接口来实现。但在Python中我们可以完全可以定义一个窗口类和一个滚动类,使用多重继承来实现。

那么为什么会存在这种差异呢?Java为什么不支持多继承呢?其实这仅仅是不同语言针对多继承中菱形继承所造成冲突的不同解决方案而已。至于菱形继承相关问题不是本篇重点,大家自行搜索即可,这里只是举个例子。

如果我们能用一种语言的基本特性写出来很棒的代码,那么换一种语言同样可以。

如何选择“第二”编程语言

最后说说如何选择“第二”编程语言的问题。这里我有几点建议:

  • 选择一门和“第一”编程语言编程思想不同甚至是相反的语言。

    比如如果已经学了一门静态类型语言,不妨选一门动态类型语言学一下,方便在对比中学习,体会不同编程思想的魅力。

  • 选一门能拓展自己能力范围的“第二”编程语言。

    比如A是一名Android开发,那么A可以选择学一下IOS开发和前端开发,拓展一下自己的能力圈。

  • 选一门自己感兴趣的“第二”编程语言。

    第一门语言用来“吃饭”,第二门当然可以选择一门自己感兴趣的。比如如果A是一个前端工程师,A对机器学习感兴趣,不妨学习一下Python和机器学习相关的算法。

当然,其实计算机编程一多半的功力不在语言上体现,而是解决问题的思路,也就是如何去运用程序语言解决问题的能力。这方面的能力也不仅仅是看看数据结构和算法能培养起来的,必须多写多练多学习开源,持之以恒才行。


版权声明:本文为博主原创文章,未经博主允许不得转载。

c语言:素数和(教训,调试时随手写的语句记得删掉)

素数和(10分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0 注意:是第n个素数到第m个素...
  • Artemisia_Alice
  • Artemisia_Alice
  • 2016年08月29日 20:33
  • 1905

java语言程序设计基础篇第十二章编程练习题

1package yongheng; import java.util.Scanner;public class Calculator { public static void main(Str...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年09月08日 22:21
  • 2537

中国大学MOOC-翁恺-C语言程序习题——第二周

02-0. 整数四则运算 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在...
  • Phenixfate
  • Phenixfate
  • 2015年01月16日 17:40
  • 1268

objective-c编程语言 第一章 对象,类和消息 第二小节 消息(object messaging)

Objective-C编程语言 -这是一份翻译,有关于objective-c 原文地址:http://developer.apple.com/library/mac/#documentati...
  • hitblue
  • hitblue
  • 2011年08月03日 00:25
  • 1896

《Python学习手册》学习笔记(20)之第20章迭代和解析,第二部分(关键词:编程语言/Python/迭代/解析)

第20章 迭代和解析,第二部分回顾列表解析:函数式编程工具列表解析与map增加测试和嵌套解析列表解析和矩阵理解列表解析为什么要在意:列表解析和map重访迭代器:生成器Python对延迟提供了更多的支持...
  • qq_33528613
  • qq_33528613
  • 2017年11月03日 19:29
  • 75

RedMonk 6 月编程语言排行:JS:第一 Java:第二

转自:开源中国 www.oschina.net/news/85920/redmonk-2017-q3-programming-language-rankings RedMonk...
  • Jerry_1126
  • Jerry_1126
  • 2017年06月30日 21:35
  • 473

我的“第二”编程语言

我们是程序员,但我们不必只是某一门语言的程序员。今天跟大家聊聊编程语言这个东西。...
  • sdkfjksf
  • sdkfjksf
  • 2017年12月25日 08:45
  • 545

我是如何选择第二编程语言的

在大学时,学的是JAVA,主要是web方向。毕业后单位的项目使用asp.net,所以又自学了c#,JAVA从此荒废,连入门知识都跑到了爪哇国....... 如今,5年过去了,工作中慢慢的接触到越...
  • mybvc
  • mybvc
  • 2012年03月07日 21:12
  • 702

Windows编程第二课。编程语言和Windows的关系笔记

先来记录基本概念: API:就是可被外界调用的接口函数。 SDK:就是编程用的工具包,厂家提供的比如JAVA的SDK。 MFC:就是个框架,是对WindowsAPI和C++的封装。 Windows...
  • qq_21441793
  • qq_21441793
  • 2017年11月11日 19:39
  • 50

13年10月编程语言排行榜:C语言第一、Java第二

发布:2013-10-12 16:31:08作者:TechWeb TIOBE社区发布了13年10月的编程语言排行榜。前五名无太大的变化,C语言岿然不动,Java第二;上月排在第三位的C+...
  • linux_loajie
  • linux_loajie
  • 2013年10月29日 13:49
  • 1786
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的“第二”编程语言
举报原因:
原因补充:

(最多只允许输入30个字)