图形化编程代码块运行的顺序是?

芥末堆 东耳 1月29日 报道

少儿编程大热之后,越来越多的创业者涌入这个赛道,资本市场也动态频频。极客晨星就于近日宣布完成了2000万元A轮融资,投资方为新东方。教育巨头的入场也代表对这个领域的看好。

从编程工具切入市场,实现图形化编程和代码之间自然衔接是极客晨星的特色。目前,极客晨星主要为 6-15 岁的儿童与青少年提供编程教育服务,其课程内容包括可视化编程逻辑概念、初级/中级算法、js、python、C等工作语言、高级算法。2016年8月成立至今,极客晨星在北京有6个校区,累计培训学生约 500 人,低龄阶段课程续费率达90%以上。

开发编程工具,实现“写代码”与“拽模块”的转换

在少儿编程领域,因为前期投入大、周期长,多数公司不会选择自己开发编程工具,更多的是课程开发,像我们曾经报道过的编玩边学、傲梦等都是这种模式。

极客晨星创始人展爽并不认可这种模式。原因是在考察了一些少儿编程公司后,她发现目前少儿编程领域存在的两个问题。

第一,很多机构用教成人的方式来教学生。展爽认为,成人编程教学的目的是培养程序员,但这种方式并不适合孩子。对于孩子来讲,学习某种编程语言并不是最重要的,更重要的是培养编程思维、逻辑思维能力。因此教学的核心不应是把某个小游戏的代码打开,改几个变量,让它变得很好玩,而是让学生了解编程的整体架构。

第二,Scratch与代码编程之间存在断层。在低龄段,多数公司会使用Scratch来教学。展爽告诉芥末堆,Scratch对孩子的编程启蒙有很好的作用,但Scratch是基于图形化、拖拽的模式,大多是自我设计和项目的创作,对于如何优化算法、程序涉及不多,因此编程逻辑并不够强。这也就造成了Scratch与代码编程之间的断层,孩子即使学习了Scratch,但依然不会写代码。

基于此,极客晨星开发了自己的编程工具,特色是学生可以在图形化编程和代码之间自然衔接。比如,孩子会写代码时可以用语法来写,用代码写不出来时,可以直接拖拽模块。这样,孩子学习时的试错成本就会降低,可以更长期地保持兴趣。

不过,平台开发前期投入会非常大,这对于公司是很大的挑战,尤其是初创公司。以同样开发工具的编程猫为例,公司工程师有150多位,自2015年成立起,进行了6次融资,B轮融资金额达,一经查实,将立刻删除涉嫌侵权内容。

一、什么是 Init 系统,init 系统的历史和现状

Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化。内核初始化的最后一步就是启动 pid 为 1 的 init 进程。这个进程是系统的第一个进程。它负责产生其他所有用户进程。

init 以守护进程方式存在,是所有其他进程的祖先。init 进程非常独特,能够完成其他进程无法完成的任务。

Init 系统能够定义、管理和控制 init 进程的行为。它负责组织和运行许多独立的或相关的始化工作(因此被称为 init 系统),从而让计算机系统进入某种用户预订的运行模式。

仅仅将内核运行起来是毫无实际用途的,必须由 init 系统将系统代入可操作状态。比如启动外壳 shell 后,便有了人机交互,这样就可以让计算机执行一些预订程序完成有实际意义的任务。或者启动 X 图形系统以便提供更佳的人机界面,更加高效的完成任务。这里,字符界面的 shell 或者 X 系统都是一种预设的运行模式。

可以看到不同的发行版采用了不同的 init 实现,本系列文章就是打算讲述三个主要的 Init 系统:sysvinit,UpStart 和 systemd。了解它们各自的设计特点,并简要介绍它们的使用。

在 Linux 主要应用于服务器和 PC 机的时代,SysVinit 运行非常良好,概念简单清晰。它主要依赖于 Shell 脚本,这就决定了它的最大弱点:启动太慢。在很少重新启动的 Server 上,这个缺点并不重要。而当 Linux 被应用到移动终端设备的时候,启动慢就成了一个大问题。为了更快地启动,人们开始改进 sysvinit,先后出现了 upstart 和 systemd 这两个主要的新一代 init 系统。Upstart 已经开发了 8 年多,在不少系统中已经替换 sysvinit。Systemd 出现较晚,但发展更快,大有取代 upstart 的趋势。

Sysvinit 用术语 runlevel 来定义"预订的运行模式"。Sysvinit 检查 '/etc/inittab' 文件中是否含有 'initdefault' 项。 这告诉 init 系统是否有一个默认运行模式。如果没有默认的运行模式,那么用户将进入系统控制台,手动决定进入何种运行模式。

sysvinit 中运行模式描述了系统各种预订的运行模式。通常会有 8 种运行模式,即运行模式 0 到 6 和 S 或者 s。

每种 Linux 发行版对运行模式的定义都不太一样。但 0,1,6 却得到了大家的一致赞同:

通常在 /etc/inittab 文件中定义了各种运行模式的工作范围。比如 RedHat 定义了 runlevel 3 和 5。运行模式 3 将系统初始化为字符界面的 shell 模式;运行模式 5 将系统初始化为 GUI 模式。无论是命令行界面还是 GUI,运行模式 3 和 5 相对于其他运行模式而言都是完整的正式的运行状态,计算机可以完成用户需要的任务。而模式 1,S 等往往用于系统故障之后的排错和恢复。

很显然,这些不同的运行模式下系统需要初始化运行的进程和需要进行的初始化准备都是不同的。比如运行模式 3 不需要启动 X 系统。用户只需要指定需要进入哪种模式,sysvinit 将负责执行所有该模式所必须的初始化工作。

Sysvinit 巧妙地用脚本,文件命名规则和软链接来实现不同的 runlevel。首先,sysvinit 需要读取/etc/inittab 文件。分析这个文件的内容,它获得以下一些配置信息:

  • 启动 getty 和虚拟控制台

得到配置信息后,sysvinit 顺序地执行以下这些步骤,从而将系统初始化为预订的 runlevel X。

DOI: 4高级程序设计[M].北京:人民邮电出版社,2011.

[6] 吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究和实现[J].计算机工程,2009(10).

[7] 谢春杰.嵌入式软PLC的研究与设计[D].南京:南京理工大学,2014.

[8] 郭建勋.嵌入式软PLC开发系统的设计[D].广州:华南理工大学,2010.

[10] 艾春丽,刘荣鹏,张凤登.基于软PLC的多任务并行控制系统的实时性研究[J].计算机应用,2007,27(12):272-274.

司萧俊,王宜怀,白  聪

(苏州大学 计算机科学与技术学院,江苏 苏州215000)

我要回帖

更多关于 数据流程图的组成不包括 的文章

 

随机推荐