电脑编译软件测试
❶ 编译器本身是如何进行测试的
编译器最重要的性质就是保证语义的正确。比如,从高级语言翻译到机器指令之后,指令必须正确的表达原来程序的意思。所以一般编译器测试都包含一些源程序,用来覆盖可能出现的各种情况。基本的原则是:原来程序的结果 = 编译后机器指令运行的结果。机器指令运行的结果很容易知道,运行一下就知道了。可是原来程序的结果你怎么知道呢?
为了解决这个“原来程序语义”的问题,最好是写一个解释器,准确无误的表达原来的代码的语义。所以我们的要求就是:
高级语言解释器(源程序) = 机器执行(机器代码)
由于处理器其实就是一个用来执行机器代码的解释器,这里有一个很美好的对称关系:
interp1(L1) = interp2(L2)
另外还有一个问题,就是编译器一般需要经过多个转化步骤(叫做 pass)才能最后编译为机器指令。比如,
L2 = pass1(source)
L3 = pass2(L2)
L4 = pass3(L3)
Ln = passN(Ln-1)
machine_code = codegen(Ln)
由于源程序经过了很多步骤猜得到最后的机器指令,如果你使用上面的公式,就会出现以下一些情况:
1. 知道结果错了,但是却不知道到底是哪一个 pass 错了。
2. 结果没有错,但是中间却有 pass 实际上是错的。但是由于之前的 pass 把输入程序的一些结构给“优化”掉了,所以错的那个 pass 其实没能得到触发错误的那个数据结构。所以测试没能发现错误。如果以后前面的那个 pass 被修改,错误就会暴露出来。这是非常难以发现的潜伏的危险。
为了防止这些情况出现,一些编译器(比如 Chez Scheme 和 Kent Dybvig 的课程编译器)使用了对每一个 pass 进行测试的做法。具体的方法就是为每一个中间语言都写一个解释器,把这语言的语义完全的表示出来。这样我们就需要检查一组等式:
L2 = pass1(source)
高级语言编译器(源程序) = interp2(L2) // 测试 pass1 的正确性
L3 = pass2(L2)
interp2(L2) = interp3(L3) // 测试 pass2 的正确性
这样一来我们就能独立的判断每一个 pass 的正确性了。
这些是基本的语义测试原理。另外除了语义,可能还有一些“表面”一些的测试,它们看代码本身,而不只看它的语义。比如尾递归优化的测试应该确保输出程序的尾递归得到正确的处理,等等。这些是语义测试检查不到的,因为尾递归没有正确处理的程序大部分也能输出正确的结果。
普通的单元测试方法也可以用来测试一些编译器里的辅助函数,但那些不是编译器特有的,所以就不讲了。
另外,就像所有测试的局限性一样,你没法枚举所有可能出现的输入,所以以上的测试方法其实也不能保证编译器的完全正确。
❷ 怎样在笔记本上编译渗透测试的软件,并导入手机里
你好,其实我们要想在笔记本上面编辑渗透一些测试的软件的话,并导入手机里面都是可以通过程序来完成的,所以说有专业的程序账号就可以
❸ 做软件测试需要具备哪些技能
1、 软件测试基础知识:
测试计划编写、设计测试用例、编写测试报告、编写BUG报告单、跟踪BUG修复情况、还需要良好的沟通能力、以及各种测试阶段所使用的测试方法、单元测试、功能测试、集成测试、系统测试等等、CMMI /ISO9001
2、 各种测试工具的使用:
我们在测试的工作中为了能够提高工作效率进程会用到很多工具、QTP、LR、QC、TD、Bugfree、VSS、SVN等等工具、虽然说工具不是万能的但是工具能为我们提高工作效率所以不能吧工具当神一样看待、但是必须得会熟练的使用
3、 操作系统相关知识:
Windows、linux、uinx这些都必须会使用、而且不仅仅是简单的操作、一般的服务管理、注册表编辑、命令行操作都需要会、可以想象下一个连apache服务都不会安装配置的人、谁能想象你可以做好基于apache环境的测试工作、什么?不知道怎么查看磁盘压力、IO数据。windows linux都有提供自带的工具可用于查看这些数据、perfmon、top什么的。
4、 数据库知识:
现在Oracle的DBA待遇比一般的开发人员待遇还高就知道数据库在企业中的重要性了、作为测试人员虽然不需要有DBA的能力、但是基本的数据库操作你必须得会把、不管是Oracle、DB2、MSsql还是mysql最少都应该能熟悉使用其中的一二。
5、 计算机硬件知识:
做过性能测试的朋友都知道在性能测试过程中硬件性能也是一个非常重要的指标、CPU、内存、IO、带宽等等、如果你是做硬件测试的。那么就更不用说了。交换机、路由器、防火墙这些设备都需要有所了解。
6、 网络协议:
如果你还知道TCP和UDP有什么不一样的话请赶快去补充点知识吧、互联网时代、一切都通过网络传输、常用协议必须得了解、曾经面试了一个测试工程师做了2年的测试居然不知道自己测试软件使用什么协议、这样的人是你的话你敢招么?
7、 开发语言即代码编写能力:
虽然不会写代码也能做测试、但是如果你想做到高级测试工程师以上、那么代码编写能力就是必选项、如果不会写代码、那么你不可能成为高级测试。高级测试工程师的一部分工作就是在写测试工具。虽然测试也需要写代码但不需要和开发一样那么精通某一门语言、可是测试却需要了解很多门开发语言(举一个简单的例子:你现在所在的项目从C++语言、2年后你换工作了、新公司的开发语言是java或者是VB什么的)所以在开发语言中测试需要更广的学习。
8、 行业知识:
行业知识之所以写在最后面是因为前面的7条我们都可以通过学习来掌握、但是唯独行业知识却只能通过工作经验来积累、不要说你去看几本书就知道通信行业、医疗行业、或者是航天行业、你认为在书本上面能学到么?
由于行业知识的特殊性所以建议朋友们不要频繁的跳槽、经验的积累是需要时间来沉淀的。
9、 具有一定的美学观:
这个说起来比较拗口一点、简单来说不管是开发活动还是测试活动、最后的目标就是将产品推向市场、而且得到用户的认可。所以如果产品在需求分析阶段就出现了偏离用户航道、那么就算测试 开发做得再好这个项目也是一样会失败。所以各位如果有幸能够参加需求评审的话、请不要吝啬你的言论。
10、请不要忘记时刻学习着:
这点我相信大家应该都能理解所以不用写什么:仅此一点“不学习就会落后”
总结:说了那么多技能或者是说是需要掌握的技术、如果你没有一颗发现缺陷之美的心态、没有一颗以提高质量为前提来投入工作中、那么就算你其他做得再好也不过是万千软件测试从业人员中的一枚。测试活动大部分用于发现缺陷、而发现缺陷之后的工作尤为重要:怎么样从发现缺陷到提高质量。
❹ 做软件测试员需要学哪些专业知识
第一步,测试基础:
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。大概就包括:测试计划编写、设计测试用例、编写测试报告、编写BUG报告单、跟踪BUG修复情况、还需要良好的沟通能力、以及各种测试阶段所使用的测试方法、单元测试、功能测试、集成测试、系统测试等。
第二步:学习脚本语言
如:python语言,当然python 是一门相对简单的计算机语言,考虑长远发展,需要了解C语言或者java。都说C语言最难,但是用得确实也多。
第三步:学习软件测试工具
学习软件测试工具并不难,只是需要我们去系统的学习。比如性能测试工具loadrunner,自动化测试工具selenium、Appium,接口测试Jmeter、Postman等。虽然说工具不是万能的但是工具能为我们提高工作效率,所以必须得会熟练的使用。最关键的一点,是要结合项目具体去操作,实践出真知,理论知识在实际项目中才能得到巩固。
第四步:计算机硬件知识
做过性能测试的都知道在性能测试过程中硬件性能也是一个非常重要的指标、CPU、内存、IO、带宽等等、如果你是做硬件测试的。那么就更不用说了。交换机、路由器、防火墙这些设备都需要有所了解。
第五步:数据库测试
MySQL数据库
MySQL简介、命令行工具以及数据管理、MySQL数据查询(条件、分组、聚合函数、排序、分页、连接查询、自关联、子查询)、内置函数、项目练习、数据分表、Python操作MySQL。
Redis数据库
Redis简介、客户端和服务器、数据类型(string、hash、list、set、zset)、各种数据类型操作、Python操作Redis、主从、集群。
第六步:项目实战
最好参与真实项目的测试工作,积累真实项目的测试经验。
成为优秀软件测试员之提升条件,如果你想成为一个更优秀的软件测试员的话,除了上面那些,你也最好能够具备开发语言即代码编写能力,虽然不会写代码也能做测试、但是如果你想做到高级测试工程师以上、那么代码编写能力就是必选项、如果不会写代码、那么你不可能成为高级测试。高级测试工程 师的一部分工作就是在写测试工具。虽然测试也需要写代码但不需要和开发一样那么精通某一门语言、可是测试却需要了解很多门开发语言(举一个简单的例子:你 现在所在的项目从C++语言、2年后你换工作了、新公司的开发语言是Java或者是VB什么的)所以在开发语言中测试需要更广的学习。
成为软件测试员之必备条件,就是你一定要有良好的心态。心要静、细心耐心、责任心。心静不下来无法对bug展开发向思维及拓展想象。任何一个测试最先面对的心理压力就是重复性的劳动。在你的测试生涯中,一定会碰见很多心理的考验,自己对于质量心里没有底、或者由于产品发布问题或者达到了测试瓶颈时候的困惑等。每个人都有自己的背景以及性格,往往对于测试来讲,就是考验心理素质的时候,这个时候就需要你自己不断地去克服这些心理
❺ 我是应届生,我想知道做软件测试需要哪些知识具体点!十分感谢~
计算机硬件知识、软件工程理论、软件体系要懂,数据库也得懂,编程语言也要懂,像流程图,甘特图,UML之类的要知道,还有测试技术。这方面有一个全国性的考试:全国计算机技术与软件专业技术资格(水平)考试,是中级的,你可以试试,下面是考试大纲:
一、考试说明
1.考试要求:
(1)熟悉计算机基础知识;
(2)熟悉操作系统、数据库、中间件、程序设计语言基础知识;
(3)熟悉计算机网络基础知识;
(4)熟悉软件工程知识,理解软件开发方法及过程;
(5)熟悉软件质量及软件质量管理基础知识;
(6)熟悉软件测试标准;
(7)掌握软件测试技术及方法;
(8)掌握软件测试项目管理知识;
(9)掌握C语言以及C++或Java语言程序设计技术;
(10)了解信息化及信息安全基础知识;
(11)熟悉知识产权相关法律、法规;
(12)正确阅读并理解相关领域的英文资料。
2.通过本考试的合格人员能在掌握软件工程与软件测试知识的基础上,运用软件测试管理方法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。
3.本考试设置的科目包括:
(1)软件工程与软件测试基础知识,考试时间为150分钟,笔试,选择题;
(2)软件测试应用技术,考试时间为150分钟,笔试,问答题。
二、考试范围
考试科目1:软件工程与软件测试基础知识
1.计算机系统基础知识
1.1计算机系统构成及硬件基础知识
●计算机系统的构成
●处理机
●基本输入输出设备
●存储系统
1.2操作系统基础知识
●操作系统的中断控制、进程管理、线程管理
●处理机管理、存储管理、设备管理、文件管理、作业管理
●网络操作系统和嵌入式操作系统基础知识
●操作系统的配置
1.3数据库基础知识
●数据库基本原理
●数据库管理系统的功能和特征
●数据库语言与编程
1.4中间件基础知识
1.5计算机网络基础知识
●网络分类、体系结构与网络协议
●常用网络设备
●Internet基础知识及其应用
●网络管理
1.6程序设计语言知识
●汇编、编译、解释系统的基础知识
●程序设计语言的基本成分(数据、运算、控制和传输、过程(函数)调用)
●面向对象程序设计
●C语言以及C++(或Java)语言程序设计基础知识
2.标准化基础知识
●标准化的概念(标准化的意义、标准化的发展、标准化机构)
●标准的层次(国际标准、国家标准、行业标准、企业标准)
●标准的类别及生命周期
3.信息安全知识
●信息安全基本概念
●计算机病毒及防范
●网络入侵手段及防范
●加密与解密机制
4.信息化基础知识
●信息化相关概念
●与知识产权相关的法律、法规
●信息网络系统、信息应用系统、信息资源系统基础知识
5.软件工程知识
5.1软件工程基础
●软件工程概念
●需求分析
●软件系统设计
●软件组件设计
●软件编码
●软件测试
●软件维护
5.2软件开发方法及过程
●结构化开发方法
●面向对象开发方法
●瀑布模型
●快速原型模型
●螺旋模型
5.3软件质量管理
●软件质量及软件质量管理概念
●软件质量管理体系
●软件质量管理的目标、内容、方法和技术
5.4软件过程管理
●软件过程管理概念
●软件过程改进
●软件能力成熟度模型
5.5软件配置管理
●软件配置管理的意义
●软件配置管理的过程、方法和技术
5.6软件开发风险基础知识
●风险管理
●风险防范及应对
5.7软件工程有关的标准
●软件工程术语
●计算机软件开发规范
●计算机软件产品开发文件编制指南
●计算机软件需求规范说明编制指南
●计算机软件测试文件编制规范
●计算机软件配置管理计划规范
●计算机软件质量保证计划规范
●数据流图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定
6.软件评测师职业素质要求
●软件评测师职业特点与岗位职责
●软件评测师行为准则与职业道德要求
●软件评测师的能力要求
7.软件评测知识
7.1软件测试基本概念
●软件质量与软件测试
●软件测试定义
●软件测试目的
●软件测试原则
●软件测试对象
7.2软件测试过程模型
●V模型
●W模型
●H模型
●测试模型的使用
7.3软件测试类型
●单元测试、集成测试、系统测试
●确认测试、验收测试
●开发方测试、用户测试、第三方测试
●动态测试、静态测试
●白盒测试、黑盒测试、灰盒测试
7.4软件问题分类
●软件错误
●软件缺陷
●软件故障
●软件失效
7.5测试标准
7.5.1GB/T 16260.1—2003软件工程 产品质量 第1部分:质量模型
7.5.2GB/T 18905.1—2002软件工程 产品评价 第1部分:概述
7.5.3GB/T 18905.5—2002软件工程 产品评价 第5部分:评价者用的过程
8.软件评测现状与发展
●国内外现状
●软件评测发展趋势
9.专业英语
●正确阅读并理解相关领域的英文资料
考试科目2:软件测试应用技术
1.软件生命周期测试策略
1.1设计阶段的评审
●需求评审
●设计评审
●测试计划与设计
1.2开发与运行阶段的测试
●单元测试
●集成测试
●系统(确认)测试
●验收测试
2.测试用例设计方法
2.1白盒测试设计
●白盒测试基本技术
●白盒测试方法
2.2黑盒测试用例设计
●测试用例设计方法
●测试用例的编写
2.3面向对象测试用例设计
●测试方法选择的策略
●黑盒测试方法选择策略
●白盒测试方法选择策略
●面向对象软件的测试策略
3.软件测试技术与应用
3.1软件自动化测试
●软件自动化测试基本概念
●选择自动化测试工具
●功能自动化测试
●负载压力自动化测试
3.2面向对象软件的测试
●面向对象测试模型
●面向对象分析的测试
●面向对象设计的测试
●面向对象编程的测试
●面向对象的单元测试
●面向对象的集成测试
●面向对象的系统测试
3.3负载压力测试
●负载压力测试基本概念
●负载压力测试解决方案
●负载压力测试指标分析
●负载压力测试实施
3.4 Web应用测试
●Web应用的测试策略
●Web应用设计测试
●Web应用开发测试
●Web应用运行测试
3.5网络测试
●网络系统全生命周期测试策略
●网络仿真技术
●网络性能测试
●网络应用测试
3.6安全测试
●测试内容
●测试策略
●测试方法
3.7兼容性测试
●硬件兼容性测试
●软件兼容性测试
●数据兼容性测试
●新旧系统数据迁移测试
●平台软件测试
3.8易用性测试
●功能易用性测试
●用户界面测试
3.9文档测试
●文档测试的范围
●用户文档的内容
●用户文档测试的要点
●用户手册的测试
●在线帮助的测试
4.测试项目管理
●测试过程的特性与要求
●软件测试与配置管理
●测试的组织与人员
●测试文档
●软件测试风险分析
●软件测试的成本管理
三、题型举例
(一)选择题
●下面的哪一项测试步骤中需要进行局部数据结构测试:(1)
(1)A.单元测试B.集成测试C.确认测试D.系统测试
●软件的六大质量特性包括:(2)
(2)A.功能性、可靠性、可用性、效率、可维护、可移植
B.功能性、可靠性、可用性、效率、稳定性、可移植
C.功能性、可靠性、可扩展性、效率、稳定性、可移植
D.功能性、可靠性、兼容性、效率、稳定性、可移植
(二)问答题
1.白盒测试方法中的代码检查法需要重点考虑代码的执行效率,阅读以下两个循环,回答问题1和问题2。
循环1:
for (i=0;i<n;i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}
循环2:
if(condition)
{
for (i=0;i<n;i++)
DoSomething()
}
else
{
for (i=0;i<n;i++)
DoOtherthing();
}
问题1:循环1的优点和缺点。
问题2:循环2的优点和缺点。
2.请简述软件系统负载压力测试的主要目的。
❻ 什么是软件测试环境和正式开发环境
测试环境就是做测试的环境,开发环境就是做开发的环境。
软件开发环境是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。
测试环境是指测试运行其上的软件和硬件环境的描述,以及任何其它与被测软件交互的软件,包括驱动和桩。测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。
(6)电脑编译软件测试扩展阅读
软件测试环境注意事项
1、一个应用程序的外观设计并不是一切。功能测试也是开发者需要关注的重要问题之一,特别是整体用户体验。如果用户在使用过程中没有达到预期的功能和业务需求,那么UI外观设计的再完美也仍会面临被卸载的危险。
2、测试要确保最大的设备和系统覆盖率,测试要确保最大的设备覆盖率,尽量在不同的操作系统和设备制造商中进行。发现错误并及时进行修复,才是测试真正的意义。
3、探索性测试重要,但不能完全依赖。探索性测试是整体测试策略的重要组成部分,可快速识别致命性bug。探索性测试需要测试人员熟悉应用程序、目标用户的典型行为以及测试方法。
❼ C语言中编译 生成 调试 测试 运行各是什么意思有什么区别
C语言中编译 生成 调试 测试 运行的区别如下:
区别一:
从编译方面来看:
编译依赖于编译器,英文是compile, vc中这一过程是将源代码转换成目标文件,如:obj文件,rc文件等。
区别二:
从生成方面来看:
生成指的是连接的过程,英文是build,依赖于链接器。vc中在这一阶段将所有的目标文件和所有需要用到的组件组合成一个整体,例如需要生成的是windows系统下的PE可执行文件,链接器会依照特定格式将目标文件组合,最后生成PE格式的,exe或dll文件。
区别三:
从调试方面来看:
调试是所有或部分代码编写完成后,让程序在调试器中运行,用这种手段对程序进行分析,找出并修正潜在问题。
区别四:
从运行方面来看:
运行就是让程序在系统中运行。
(7)电脑编译软件测试扩展阅读:
C语言的介绍:
C语言是目前流行的通用程序设计语言,是计算机专业人员和计算机爱好者开发软件的首选开发工具。C语言源程序必须经过某种编译工具翻译成为目标机器语言程序才能够在计算机上执行。
然而随着程序编写规模的扩大,顺利编写出正确的程序绝非一件容易的事情,早期的许多编译工具仅仅提供翻译功能,已满足不了应用的要求,编程人员需要-种功能全面并高度集成的编译环境。
程序是一段具有一定功能的代码,编写程序的目的是解决问题。当程序人员写完程序后,其实并不起作用,只有当编写的程序经过一系列的处理后,能够解决问题时。
序才成为真正的程序,这一系列的处理过程,-般就是编辑、编译、连接、调试与运行等。目前最成熟的C语言集成环境主要有Turbo C2.0和Turbo C 3.0( 简称TC30)或Borland C++3.1( 简称BC31)以及Visual C++ 6.0。
❽ 学好软件测试都要掌握些什么会不会用到C语言和数据结构
首先,要有宽泛的计算机基础知识。微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。都精通不大可能,因为人的兴趣都不相同,但是,这些功课的基本知识点是应当了解的。我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。为什么呢?测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。例如对于一个用C写的上网拨号程序,测试员需要考虑:
(1) 程序的功能是否正确;(要求计算机知识)
(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)
(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)
(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)
(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)
(6) 如何搭建测试环境;(动手能力,硬件知识)
(7) 做代码检查;(比较深入的C语言知识)
(8) …
所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手的多。如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。有的朋友可能会说,我就是不愿意做编程才来做测试的,怎么测试还有这么一个要求?我要尝试说服你:)。我的理由有两个:
1. 只有知道怎么做一个软件产品,才能真正懂得这个产品。而只有真正懂得了产品,才能做好测试。一行代码不会,你会始终是个门外汉。不要满足于点鼠标,而去尝试着打开我们面前的黑盒子。
2. 自动化测试技术需要编程技术。自动化测试是软件测试的一个发展方向,一方面很多测试工具都需要人工干预,编写代码;另一方面在有的情况下需要自己编写测试工具。
对于测试员来说,编程技术不要求精通,但要会。
再次,学好英语。在现阶段,我们只能承认,在计算机方面,英语国家领先。有很多的资料都是英语的,如果仅仅局限在中文资料方面,会影响你的渊博程度:)。举一个简单的例子,Windows操作系统会捕捉到一些程序或者操作系统内部的异常,你可以根据这个异常到微软网站上去查找错误原因和解决办法,其中有很大一部分资料就是英文的,因为还没有翻译过来或者以后也不会翻译的。
以上所说的几点看法,都是在计算机行业里面打转,下面说几个“虚”的要求吧。
1. 锻炼出一双测试的眼睛。我的一个朋友,她也是做软件测试的,她说,有一次她和她老公去买笔记本电脑,她一眼就看出液晶屏上有几个坏点,而她老公却看不出来。她说,这要归功于她有一双测试的眼睛。测试的眼睛,就是对问题特别敏感,能够发现常人发现不了的问题。测试员就是要找软件中的问题,有了这双眼睛会让你收益非浅。耐心,细心和经验,会有助于我们到达这个要求。
2.平和的心态。从心理学上说,每个人都不喜欢别人对自己挑毛病,程序员也是这样。所以,要以平和的心态去看待发现的软件问题,以平和的心态去和程序员交流。千万不要以为自己发现了几个问题,就可以责怪程序员,或者冲过去骂他们一顿。也不要在背后谈论谁谁谁不行,bug太多。一个项目是大家共同做的,需要举集体之力才能做完。我们测试员发现的问题多,表明项目的风险又少了一点,应该高兴才是。如果你的脾气不好,可能这个恶名会掩盖你的真才实学,很可惜的。
❾ 计算机软件测试的,想从自学编程,有了解的给我些建议(高分)
你好,自学编程建议从C语言学起,可以说60%~80%的程序员都是从C语言开始的。
众所周知,编程语言分为结构化程序语言和面向对象的程序语言,其中结构化程序语言要比面向对象的要简单,语法要简单一些,而且也容易理解一点,C语言是经典的结构化编程语言,易学易用,它的编译器turbo
c也非常容易使用,所以非常适合作为初学者的入门语言。
学完C语言之后可以纵向扩展,学过C之后再转入C++、C#或者是java的学习,C++和C#就不用说了,它们都是在C语言基础之上建立的面向对象语言,而Java与C语言在语法上也有一定的相似性,所以学完C之后再转入Java的学习也是顺理成章的事。
当然一开始就上面向对象的语言不是说不可以,比如说VB还是很简单的,VB做一些简单的系统也是非常实用的,这个就要看怎么选择了,如果是为了短期能做点东西比如说做个系统,那么VB是一个不错的选择,但还是建议你把基础打牢,从C语言学起,学完C之后学其他的语言就很容易了。
HTML只是一门标记语言,很容易掌握,如果需要用的话,可以临时突击一下,一个星期内估计就能会使用了,所以我觉得没必要去刻意的学它。