G语言使用各种功能模块和流程图模块来编写程序逻辑,通过设置各个模块的参数变量来控制程序的行为,如下图所示,EV3-G版本的编程软件支持的部分外设功能模块和流程运算模块

控件模块

控件模块
用这些模块搭建的一个简单的流程图,可能像下面这样:

简单的流程
稍微复杂一点的流程图可能像下面这样:

复杂一点的流程
如果还觉得不够抽象的话,再看看RCX时代的G语言开发软件,ROBO LAB 写出来的程序,是长这样的 :)

用robolab开发的程序
乐高的图形化编程软件,有一点体验做得很棒:它将编程的实际操作和帮助文档有机的结合在了一起。在软件内以向导的方式提供了官方示例的机器人模型的详细搭建步骤,同时对于编程部分,也提供了分步引导的编程步骤。帮助文档的界面和实际编程的界面完美的融合在一起,很少看到过教学体验比这更好的软件。比如NXT2.0版本的一个弹球机器人模型的帮助文档如下图所示:

NXTshooter bot模型的搭建示例
如果你有一定的编程经验,看到这里,你可能会怀疑,图形化编程虽然上手比较容易,但是在编写流程分支逻辑较为复杂的程序时,操作起来会不会比较麻烦?对于程序员来说,很多逻辑用代码来编写可能更加快捷一些,用各种组件拖拽,画成流程图反而是繁琐的
有这种想法的不止你一个,所以,除了乐高官方推出的G语言开发软件以外,各种第三方公司和个人爱好者还为MindStorms 开发了支持各种不同编程语言的编程工具,所涵盖的语言包括: C / C++ / Basic / Python / Java / Haskell / Ruby / C# / Lisp / Swift 等等,当然,有些语言很多只是功能简化的版本(毕竟MindStorms主控模块的ROM和内存大小都有限) 。这些语言,也不是在所有的MindStorms产品上都支持,目前以NXT版本的支持最广泛。
理论上,既然现在的EV3运行的已经是Linux,那么应该凡是能在linux上编译执行的语言都能支持,但是前提是,你需要有对应版本的编译器,EV3的硬件驱动和马达,传感器等组件的驱动库的支持,以及各种外设的Library函数库。
所有的语言中,支持C语言的工具和开发环境相对成熟,完备一些,简单高效最重要,多数情况下,if else for switch也就差不多了 ;)

比如,ROBOTC 开发环境,提供类C的编程语言支持