Ⅰ 编程是干嘛的
编程字面上的意思就是编写程序了,像你使用的APP,电脑手机系统,都是以计算机语言进行编写的,所以说编程就是通过计算机语言或代码,来完成软件或程序的编写。
Ⅱ 请问什么叫硬编码,它和普通编码有什么区别
硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。
硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。
硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时确定。
它和普通编码的区别是:
1、编码方式不同:
普通编码:使用CPU进行编码。
硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等。
2、使用方式不同:
普通编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点
硬编码:性能高,低码率下通常质量低于软编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码
3、复杂程度不同:
普通编码比硬编码要复杂一些,对以后的考虑要周到一些。普通编码是一种设计,而硬编码不过是一种具体的实现。软件开发不只是需要一个软件的实现,更需要软件能够很好的修改,方便得扩展,所以需要一些设计技巧在里面。
(2)硬编程是什么扩展阅读:
在许多情况下,单个硬编码值(例如数组大小)可能会在程序的源代码中出现多次。这将是一个神奇的数字。如果值的某些外观被修改,这可能通常会导致程序错误,但不是全部。这样的错误很难找到,并且可能会长时间保留在程序中。
如果相同的硬编码值用于多于一个参数值,例如,可能会出现类似的问题。一个由6个元素组成的数组,最小输入字符串长度为6。
程序员可能会错误地更改值的所有实例(通常使用编辑器的搜索和替换工具),而无需检查代码以查看每个实例的使用方式。通过定义将名称与值相关联的常量并在代码中使用每个外观的常量名称,可以避免这两种情况。
Ⅲ 编程是什么
编程 是个动词,编程==写代码,写代码为了什么? 为了让计算机干你想要干的事情,比如,马化腾想跟别人聊天,于是写了个聊天软件,这个软件就是一堆代码的集合,这些代码是什么?这些代码是计算机能理解的语言。
那计算能理解的语言是什么呢? 之前,我们已经了解到,它只能理解2进制,0101010…,你总不能人肉输一堆二进制给计算机(虽然最原始的计算机就是这么干的)让它工作吧,这样开发速度太慢了。所以最好的办法就是人输入简单的指令,计算机能把指令转成二进制进行执行,举例如下:
假如 程序员想让计算机 播放一首 歌曲 , 只需要输入指令 ,
open "老男孩.mp3"
play
计算机的CPU接收到这样的指令后,会把它转成一堆 只有cpu可以理解的指令,然后再将指令变成各种对应的如下类似二进制
[ op | rs | rt | address/immediate]
353868decimal
binary
最终cpu 去调用你的硬盘上这首歌,通过音箱播放。
上面cpu那段指令太难理解了,如果让你天天写这样的代码,大家非得自杀不可。还好,伟大的计算机先驱们,开发了各种编程语言,让我们只需要通过写一些简单的规则,就能操作计算机工作啦。
有哪些编程语言?
编程语言总体分以为机器语言、汇编语言、高级语言,如下
机器语言
由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序称为目标程序。只有目标程序才能被计算机直接识别和执行。但是机器语言编写的程序无明显特征,难以记忆,不便阅读和书写,且依赖于具体机种,局限性很大,机器语言属于低级语言。
用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,用于控制它的操作二进制代码。
尽管机器语言好像是很复杂的,然而它是有规律的。
存在着多至100000种机器语言的指令。这意味着不能把这些种类全部列出来。
以下是一些示例:
指令部份的示例
0000 代表 加载(LOAD)
0001 代表 存储(STORE)
…
暂存器部份的示例
0000 代表暂存器 A
0001 代表暂存器 B
…
存储器部份的示例
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器
000000010000 代表地址为 16 的存储器
100000000000 代表地址为 2^11 的存储器
集成示例
0000,0000,000000010000 代表 LOAD A, 16
0000,0001,000000000001 代表 LOAD B, 1
0001,0001,000000010000 代表 STORE B, 16
0001,0001,000000000001 代表 STORE B, 1[1]
汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
汇编的hello world,打印一句hello world, 需要写十多行,也是醉了。
; hello.asm
section .data ;数据段声明
msg db "Hello, world!",0xA;要输出的字符串
len equ $ - msg ;字串长度
section .text ;代码段声明
global _start ;指定入口函数
_start:;在屏幕上显示一个字符串
mov edx, len ;参数三:字符串长度
mov ecx, msg ;参数二:要显示的字符串
mov ebx,1;参数一:文件描述符(stdout)
mov eax,4;系统调用号(sys_write)
int0x80;调用内核功能
;退出程序
mov ebx,0;参数一:退出代码
mov eax,1;系统调用号(sys_exit)
int0x80;调用内核功能
高级语言
高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行(编译后生成的可执行文件,是cpu可以理解的2进制的机器码组成的),使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。
编译后程序运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器(想运行,必须先装上解释器,就像跟老外说话,必须有翻译在场),但这种方式比较灵活,可以动态地调整、修改应用程序。如Python、java、PHP、Ruby等语言。
总结
机器语言
优点是最底层,速度最快,缺点是最复杂,开发效率最低
汇编语言
优点是比较底层,速度最快,缺点是复杂,开发效率最低
高级语言
编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
主流编程语言介绍(10分钟)
世界上的编程语言有600多种,但真正大家主流在使用的最多二三十种,不同的语言有自己的特点和擅长领域,随着计算机的不断发展,新语言在不断诞生,也同时有很多老旧的语言慢慢无人用了。有个权威的语言排名网站,可以看到主流的编程语言是哪些
TIOBE发布编程语言排行榜已经快6年的时光了,在这六年中我们见证了不少语言的起起落落。虽然国内有很多大牛说,关注这语言的排名没有多少意义。但仍可以看出那些语言日渐兴盛,哪些日渐没落,我们从Objective-C的上升过程中,还是能看到移动设备端,特别是iOS应用开发方面的黄金潜力。
下面介绍下几个主流的编程语言:
C语言:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
C++:
C++是C语言的继承的扩展,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
JAVA:
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
PHP:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域
Ruby:
Ruby 是开源的,在Web 上免费提供,但需要一个许可证。[4]
Ruby 是一种通用的、解释的编程语言。
Ruby 是一种真正的面向对象编程语言。
Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。
Ruby 可以用来编写通用网关接口(CGI)脚本。
Ruby 可以被嵌入到超文本标记语言(HTML)。
Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby
GO:
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
由其擅长并发编程
Python:
Python是一门优秀的综合语言, Python的宗旨是简明、优雅、强大,在人工智能、云计算、金融分析、大数据开发、WEB开发、自动化运维、测试等方向应用广泛,已是全球第4大最流行的语言。
Ⅳ 硬件编程和软件编程有什么区别哪位大侠给详细说说吧!
硬件编程针对的是硬件的驱动之类的东西,应该说是底层的东西,一般用C、C++和汇编以及hdl语言编写,需要对数字逻辑,数字电路,模拟电路等电子学方面有一定的基础,而软件编程主要是在操作系统的基础上编写应用程序,用高级语言编写,不需要对底层特别的了解,主要面向的是用户的需求。
Ⅳ 编程是学些什么东西
列出一些主要基础课程,供参考。
计算机硬件;计算机网络;操作系统;计算机组成原理;计算机体系结构;数据库原理;软件工 程;离散数学;算法设计与分析;数据结构;编译原理。
编程语言可以未来职业需要选择。
例如底层开发:汇编语言;C;C++。
应用开发:tml、xml、javascript、jsp(或 asp,php)等。
普通应用:C++;VB;java 等。
Ⅵ 编程是什么
这个问题我来认真地回答一下~
很多人觉得编程是门高深莫测的学问, 担心自己学不来. 实际上, 编程虽然不是随便能学会的技能, 但是也没有那么难. 因为, 普通人已经具备了很多编程需要的基础. 为什么这么说?
1. 编程也是一门语言
和我们日常使用的中文、英语一样, 编程语言也是一门用于沟通的语言.
只不过"编程语言"是和计算机沟通的语言.
而"程序", 就是使用计算机能够理解的语言书写的一连串命令.
而"编程"就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令, 这就是"编程". 而后, 计算机会根据这些指令一步步执行, 最后完成任务.
所以, 我们可以看到, "编程"涉及到 3 个组成部分:
我们, 负责思考解决问题的步骤
我们, 负责使用计算机能够理解的语言, 来描述解决步骤
计算机, 负责执行这些步骤
我们可以把"程序"想象成"菜谱". 下面, 我们以"煎鸡蛋"为例: 假设我们不会炒菜, 然后获得了一份煎鸡蛋的菜谱, 而后, 我们就可以照着这个菜谱一步步去操作, 最后做出一份香喷喷的煎蛋.
在这里, "菜谱"就是"程序", 有人制作了这个"程序", 我们呢, 只需要按照这个"程序"执行, 最终获得程序运行的结果 -- 一份香喷喷的煎蛋.
不过稍等一下, 可能有人会问: 尽管有菜谱, 我们还是可能把煎蛋搞砸啊:
可能我们没有按照菜谱煎蛋, 导致失败;
可能菜谱描述的煎蛋方法有问题;
可能煎蛋方法没问题, 但是描述有歧义;
2. 如果让计算机煎鸡蛋
假设由我们来编写菜谱, 让计算机来煎蛋. 是否也会面对上面的 3 个问题?
对于第 1 个问题
计算机不存在这个问题. 因为计算机没有思想没有情绪, 它只会不折不扣地执行指令.
对于第 2 个问题
这个问题涉及到"解决问题的能力".
我们不要把"解决问题的能力"想像得太过高深, 其实我们成人每一天都在解决问题. 比如, 考虑如何完成工作, 考虑如何让孩子上好学校... 这些都是在解决问题. 所以说大家对于这部分有充足的练习, 能力是及格的. 我们的瓶颈在于第 3 个问题.
对于第 3 个问题
这是我们现阶段的瓶颈 -- 尽管我们有解决问题的办法, 但是还不知道如何按照计算机能够理解的语言去描述步骤.
如何解决第 3 个问题
现在, 我们已经成功把"编程的难点"缩小到"如何准确描述步骤"这个问题上.
那么, 如何准确描述步骤呢:
把解决问题的"步骤"抽象成"流程"
按照"计算机语言的语法"去描述这个"流程"
学习"计算机语言的语法"是今后的学习内容, 所以我们暂时跳过, 先看看如何把步骤抽象成流程.
3. 把"步骤"抽象成"流程"
我们生活工作中的大部分任务, 都可以抽象成"流程图".
而所有的"流程图"都可以使用 3 个基本结构("顺序"、"判断选择"、"循环")描述清楚, 区别只是嵌套组合的复杂程度.
上面我们分析了"编程"的 3 个组成部分, 这些分析可以帮助我们回答很多问题:
Q: 我是否适合学习编程?
A:如果你是个普通人, 心智是正常的, 思路是清晰的, 那么学习编程就没有问题. 我们需要额外学习的只是和计算机沟通的语言, 然后把你的思考转换成用这个语言来描述就可以了.
Q: 我的孩子是否适合学习编程?
A:那么他现在是否有"顺序、判断、循环"的逻辑概念? 他是否能解决一些小的问题, 比如走迷宫, 比如按照图纸搭建乐高.
Q: 没有基础的孩子, 如何为学习编程做好准备?
A:可以先练习逻辑思考问题能力, 掌握"顺序、判断、循环"的基本概念, 有了这两项就具备学习编程的前提.
Q: 编程有什么好处?
A:最直接的, 锻炼解决问题和逻辑思考的能力, 锻炼借助计算机帮助自己解决问题的能力.
Q: 编程需要学习什么语言?
A:语言并不是关键, 因为所有的编程语言都是可以让计算机理解的,就看你对哪个感兴趣了,如果是想提升数据分析方面的能力,可以学时下热门的Python,对办公自动化有很大帮助,如果想把计算机基础打扎实,可以学习C语言
Q: 编程在哪学习?
A: 可以在课呱呱学习,下载登录了就能学习~Java 、Python、web前端、UI设计、计算机基础、C语言、计算机考证等等都有,课程非常垂直和精良,良心学习工具,你值得拥有~