编程学底层
A. 程序语言底层是怎么实现的
你好, 对于你的问题:
1、C++和java都是面向对象编程语言(OOP),接口是OOP的一个特色,而函数是任何编程语言无论是面向过程还是面向对象都有的。
2、关于语句底层如何实现,你应该看过编程教材的第一章,一般在书籍开头都会介绍程序时有何而来,在你编写完程序代码后,都会经过编译、链接这个过程,这些就是将你的代码进行转换并最终生成可执行程序的过程,这些由IDE(开发工具)和编译器(如Java的JDK)来共同完成,内部的细节是自动完成的。
3、要了解底层代码实现,建议你去学习“编译原理”这门知识
4、要学习控制CPU和内存存储,建议去学习“计算机操作系统”这门知识(不是如何使用操作系统,是如何设计操作系统)
PS:除非你是非常喜欢或者就想做底层开发(如操作系统开发),一般应用程序开发只要学好相应的语言和类库即可!
有其他问题欢迎咨询!
B. 怎么系统的自学网络编程(底层协议)
用java来实现网络编程是很容易的,可以作为网络编程的入门。使用C++和winsock相对复杂一些。
总之看实际需要了。
你好初学网络编程者可以从以下几个步骤开展:
1)下载一个可以互动的学习工具,通过这个与这个工具互动,我们可以及时的学到每个api的结果如果。
对于有c/c++或java基础的朋友通过一两个礼拜的时间就可以上手了,另外个人建议初学者可以学习dive into python。
2)掌握网络编程中会用到的几个基本概念和内涵,比如IP地址,port号,socket等
3)记住和消化网络编程C/S模型,把server和client端编程的常用模式理解和消化
4)花几天时间学习socket api集,api集可以分为下面几大类:创建 socket bind listen accept收发 read/recv/recvfrom write/send/sendto关闭 close shutdown参数 getsockopt/setsockopt地址 gethostbyaddr getaddrbyhost,...在学习这些api时候,可以先关注在函数功能,参数意义上
5)结合python互动平台,实践socket api的用法,比如socket函数怎么使用,bind怎么使用等等。在互动过程中,我们可以变换参数,看看调用结果如何。比如,创建一个tcp socket的语法如下:socket(AF_INET,SOCK_STREAM)创建一个udp socket的语法如下:socket(AF_INET,SOCK_DGRAM)
6)学习socket server端编程实现简单规约比如echo,time等,然后通过cmd中的telnet来测试。
7)学习I/O模型,比如阻塞、非阻塞和反应式(select,poll,WaitForMultipleObject)等
8)学习Richard Stevens的《Unix网络编程》,深入学习其中的api原理以及服务端设计原理,并通过代码编写。
9)下载高性能网络编程框架twisted,笔者强烈推荐,它将使你的网络编程效率提高10倍以上。
10)学习设计模式、操作系统知识比如线程、进程、同步等。
C. 请问编程中的 上层 和 底层 是什么意思 比如有人说 "游戏用JAVA或c#做上层,用汇编或c/
上层(或者是表层)、中间层和底层没有严格意义上的定义,在不同的项目中需要结合具体需求来具体分析。
一般来说,表层就是指展现给用户看的部分;而底层就是系统的最核心的部分。一般我们认为,越接接硬件的编程就越底层。
比如,一个在线通讯软件(QQ这种),表层就是窗口啊、菜单啊、按钮啊这些玩意儿;中间层是业务逻辑部分,就是你点击这些按钮会产生相应的什么事件,进行了什么操作;底层就是Socket网络通信了。当然,我这里这三层是大致划分的,实际开发中比这个要更具体详细。
再比如,拿题主说的游戏举例子,表层就是各种游戏的界面了;底层就是游戏引擎了。底层干嘛?接收你的鼠标键盘响应信号、操作显卡在显示器指定位置生成各种二维的三维的图像、控制声卡输出音频等等等等。
至于编程语言问题,这就牵扯到低级语言和高级语言的问题了。一般来讲低级语言和高级语言区别在于:
高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好。
低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差。
越低级的语言,形式上越接近机器指令(汇编语言就是与机器指令一一对应的)。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,使编写程序的过程更符合人类的思维习惯,并且极大了简化了人力劳动。也就是说你用高级语言写一句,会被转换成许多底层操作,大部分的工作交给了负责转换的机器(即编译器),从而人力得到了解放。因为机器就是用来为人类提供便利的,所以说高级语言的出现是计算机发展的必然结果。(参考:http://blog.csdn.net/guoxiaoqian8028/article/details/9103151)这就产生了执行效率的问题。
所以说用 C/C++ 这类语言更适合写游戏引擎。游戏嘛,必定是要求响应速度极高的,总不能按完键盘了等100毫秒才响应,生成个三维地图电脑卡半天。但一般不会游戏的所有部分都用 C/C++ 来完成,为什么?上面说了,可维护性差、可移植性差。这时候就需要用面向对象这种“高级语言”出马了。
至于题主提到的“不同语言之间的互通”,建议题主理解一下“接口”(不是面向对象里的“接口类型”)的概念。
泛泛而谈,希望对题主有所帮助。
D. 什么是底层编程
用命令行开发,没有IDE环境,没有框架,所有的结构算法都要自己来写,并且对程序的效率和内存利用要求较高,比如在unix下开发驱动程序。
而非底层的简单多了,比如打开C#,直接就拉出一个窗体来,这要是写代码要写很多的。