针对编程语言的选择问题给出我的一点看法

我会推荐3门语言,每门有不同的学法。

C

毫无疑问,C是最接近底层的语言。可以作为中层语言来使用。C的效率很高,我以前练习过汇编,我发现C语言操纵内存的本领要优于汇编。比如C语言的数组,int arr[3];如果我这样:arr[0+1]的话,C语言会自动的找到以arr为基地值,sizeof(int)为大小的下一快地址,也就是&arr[1]。而汇编要访问只能+F H。也就是汇编需要操作字节,而C则自动帮你处理了这个东西。C上面仿佛有一个高明的数学模型在指引着内存的分配。
如果大家写C,会发现很多C的标准库是GNU写的标准库。如果再仔细挖一下,会发现#include<stdio.h>其实是调用的gcc的头文件。如果再仔细发现,会发现其实这个文件的实现已经是汇编的了。也就是直接针对机器给你优化好,等到链接的时候链接上去。那再底层一点,如果你自己开发操作系统,肯定需要提供一个想屏幕打印的函数。这个时候你操作系统肯定需要写一个操作显示设备的函数。而只不过是给C提供的接口罢了。因此你完全可以自己写printf和scanf。
如果反过来想,为什么你用到linux,要和gcc如此的捆绑。
比如你新装一个发行版,一般都会查看其gcc版本。因为linux是由C写的,它本身就依赖许多gcc的标准库。所以为什么clang之流的只是个前端。你说后端他们能写么?能啊。只不过需要费点力气,要适配所有机器的IO。但可能这些工作已经由GNU和这些硬件厂商商量好了,所以可以这么说吧,这些硬件本身是向C靠拢的。。。
写C的特点是需要用到很多宏,这些宏有可能只是一个经常使用的字段,也有可能是函数。写C动不动就写的很大,很长。
C语言的标准也在变,不过是加入一些新的关键字之类的。
写C的话,处理字符串是1个难点。C语言没有抽象一个数据类型为string类型。因此只有字符数组。
C语言的指针是可以直接操作内存的,纵观当今高级编程语言,可以达到这个要求的很少。
C里面没有多少可以让你使用的库啊之类的,因此你无法使用一些封装好的算法。但正是这样,可以清楚的看到算法的实现。不会像Java一样遮遮掩掩。
C的数组越界不会处理,语法分析不认为其有错。因此可能存在这个地址的值不是你想要的这种情况。俗称:内存越界。
而也因此可以收获一些效率。
学C的语法只是一件很简单的事情。但想深入钻进去,必须得精通数据结构等一些学科。
C常年经久不衰。诞生的太早,但这点就很奇迹了。
C是Java,C++,C#,python的爸爸。是亲爸爸。
下面是学习的心得:
用C多做些操作内存的事情,你就会发现自己是在编程。。。而不是按照别人给的API疯狂拼装。
C涉及到很多计算机相关的学科。比如:C里面的数据类型的存储直接是以补码的方式存储,需要学习计算机组成原理。
C里面的结构体其实就是数据结构的代名词。
C的指针其实可以不必着急,等到学过很多必修课,然后靠做实验/对比C和Java的指针/学习一门简单的汇编语言/看一个高质量的名校的C基础教学关于指针一节的PPT。这样对指针其实就了解了。以后的话,无非是在excel中画内存条,如果遇到需要传递**,***的时候。

Java

Java是排名第一的编程语言。用的人非常多。
Java分为SE,EE,ME。其中ME已被淘汰。ME多用于嵌入式环境,以前智能机和非智能机换代的时候就有很多半智能机。他们上很多游戏就是由JavaME开发。但现在嵌入式领域多采用linux,已经完全被C语言挤压,JavaME没有丝毫优势。(Java的初衷其实就是嵌入式领域。。。)
SE是Java提供的它的面向对象,语言特性的一个最好诠释。SE中有大量类库,无数的类库。这些类库一般公司都会有选择,建议选用最常用的类库,将之搞得十分熟练。没错,是会用后用的熟练。Java SE就是调方法的。中间少不了一些面试的题目,而我认为也是很好的切入Java的点。建议可以配合面试题去学习Java。最常用的IDE有eclipes和idea。后者在SE阶段用社区版没有一点问题。因为Java开发注重速度和效率,而程序的运行效率这些是其次(如果考虑那么Java的优势就没有了)。因此一个Java程序员的水平高低也和熟练使用IDE的各种快捷键,解决IDE各种的bug,熟练使用google/百度解决问题有很大的关系。
Java严格的讲是半面向对象的。但十分好用。
工程级的代码经常是开发网站的后端。电商一类的网站的后端开发是Java能够发挥它的光芒的顶点。
Java的开发速度极快。它近年来多被引用与提供一个网络的数据提供平台。
严格意义上说,Java是靠网络带火的没一点问题。
在SE学到一定程度就需要多往网站领域发展。
Java的高级部分是严格按照Java的基础走的,它不会说高级部分用C语言打底,而是高级部分用Java本身复写。
Java我觉得可以吊打C语言的地方在于其程序的兼容性。
这一点我觉得C语言比不上。
高层的东西很容易开发出像样的程序。而底层的部分则需要不断对C进行发掘。我的思路是Java当高层,C作为底层,互相理解。

python

python应该说是python3.因为python2和python3区别很小,所以直接学习python3最好。
python主要解决数据的获取。也就是爬虫。
python作为一门脚本语言,你可以理解为一行一行执行的。
许多对某个漏洞的利用是用python代码写成的。
python其实是封装成语言的C。
如果对python很熟悉的人会发现python本身也是用C写的。因此它绝对很多东西都可以用C写。比如它的request库可以是一段可执行文件,但是被python给封装了。
它是一种完全的对象型语言,因此会Java的基本会python。
它主要比Java优的地方在于它可以以更少的代码换取和Java等同的功能,换成C的话可能就无法实现。。。
因此它是一种以时间换取效率的选择。它是脚本嘛。你写好后可以放在服务器后台执行。

a.py

#!/usr/bin/env python
py something

chmod u+x a.py
./a.py &

然后托管到后台就可以。
推荐的IDE是尽量轻的。甚至windows可以使用记事本进行编写。linux可以使用vim+补全插件编写。
它主要的场景就是为了缩短开发的时间,短时间需要干一件事情。而且它的库不少,可以导入别的库,大大方便自己开发。

上面就是我对几门语言的比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值