谈选择,当然要考虑到选择出发点、个人情况和环境。是入门还是职业考虑?
入门可以较多地考虑兴趣点。如果喜欢弄个网页, java cript不错,如果想做个爬虫,Python也不错。如果你是个计算机发烧友,对编程本身又很执迷,当然选择C了。
如果是职业考虑呢?当然也分当下和为以后做打算,你去看一下大厂的需求或tiobe的排名就较清楚!但是,做为职业玩家,一般都是较精通一门,需要熟悉多名 编程语言 的。
另外,就编程来说,编程语言是工具、编程思想才是核心,数据结构和算法才是内功,内功是潜在的,于细节处体现你代码的优雅和高效。
1 从历史来看
首先要看tiobe.com的最新排名,C本身的排名可不低。

其次,在流行语言中,C的历史最为悠久,按历史的脉络来看,事物的发展总是由简到繁,而事实也是如此。对于学习一个东西来说,按由简到繁是一个较佳的选择。

需要知道的是,C++是C的后续, Java 是C的后续。
2 从应用领域来看
为什么有多种编程语言?因为,现实世界的复杂性,不可能一门语言能擅长(高效)解决各个领域的所有问题。编程语言开发者都是因为某个领域某个点的需要,才在某个语言的基础上进行改进和完善的。所以,流行的语言都有自己的擅长领域。

C语言 是系统开发语言,特别适合理解计算说明的底层。
3 从面向过程与面向对象的编程思想来看
面向过程的 程序设计 (Procedure-Oriented Programming,简记为POP),就是分析出解决问题所需要的数据和整个过程,将过程分解逐层分解为步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,最有代表性的当然是C语言了。

面向对象程序设计(Object Oriented Programming)是把构成问题事务分解成各个对象,相关的数据体现为对象的属性(数据成员),让解决问题的步内聚到对象的行为(或方法,也是函数)中,然后通过对象再去调用其成员数据和函数。最有代表性的当然是c#的当然是java、c#等语言了,而c++则兼有两者的特点。

POP最先获得了最广泛的应用,然后才是OOP。
对比一下两者的代码:

类(面向对象最重要的数据 抽象 )就是一种更高级(或更抽象)的结构体(面向过程最重要的数据抽象)。
在对比中学也是一种有效的学习方法,可以融会贯通,相互借鉴。
对于小程序来说,根本就没必要OOP。对于大程序来说,OOP较佳。就果生产一个产品,如果是小产品,直接构建,如果是一个复杂的大产品,可以考虑组装。
另外,OOP因为封装的需要,天然就有一些性能损耗,所以在嵌入式领域,POP更佳。
从抽象层次来看,OOP是更高层次的抽象,理解起来更困难,如果有了POP的理解,在POP以函数为模块来构建程序有了一定的认识,再来认识OOP就显得较容易了。
20世纪60年代以来,编程语言的理论已经出现了几次进步。编程语言的范式也已经发生了不少更替:
4 从了解底层看
我们知道,我们现在所使用的计算机都是冯诺依曼机,冯诺依曼机的核心思想是存储程序控制概念,包括程序存储和程序控制两个方面。程序存储到内存,从内存中读取数据和代码来控制流程及对数据的处理。
C是最接近底层的高级语言,有最直接的内存管理,有系统开发语言之称。看以下的编译流程,C可以直接汇编到汇编代码,可以更好地了解到代码在计算机上的运行机制,这是其它高级语言所不能的。

5 从数据结构理解来看
要真正理解数据数据结构,数据的链式存储是很重要的,很难想像,没有指针的链式结构总是觉得很别扭。可以看到的是,很多关于数据结构和算法的书籍,都是用C或C++来实现的。
6 多种语言的需要
一门语言是通向另外一个世界的一个窗口,计算机语言也是。一个真正的程序员,不可以只会一门语言,甚至两门语言都不够,多门语言可以融汇贯通,借鉴各自的编程思想。但不可否认的是,学第一门编程语言难一点,学第二门编程语言会容易一点,学第三名编程语言会更容易一些。
7 综合了解各流行编程语言
Java
Java是一门 面向对象编程语言 ,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Python
Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNUGeneral Public License)许可。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

C
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C++
C++是一种面向对象的计算机 程序设计语言 ,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
C++是C语言的继承,进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。

Javascript
Javascript[1]是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。

C#
C#是 微软公司 发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

-End-