概述

小熊猫C++的历史和简要介绍

小熊猫C++的目标用户群和需求

小熊猫C++是一个面向编程入门和初级用户的C/C++集成开发环境(IDE)。其主要的目标用户主要有以下几种:

  1. 编程入门用户,包括正在学习C/C++语言编程的大中小学生,以及从事这方面教学工作的教师们;
  2. 准备参加信息学/算法编程竞赛的用户,或者从事这方面培训的教师们;
  3. 使用C/C++语言编写小型程序和项目的用户

作者在中学时期曾参加NOI竞赛并获省赛第一名、全国三等奖;大学毕业后从事多年程序开发工作,曾参与优酷网的早期开发;后进入大学教学,有多年C语言、Python和软件工程教学经验。在教学过程中,作者发现,市面上缺少一个完善、好用的,面向初学者的C/C++集成开发环境:

  • 已有的C/C++ IDE,要么体积庞大,需要长时间的下载和安装,如VS和Qt Creator;
  • 要么安装复杂,需要手工配置,如VS Code;
  • 要么需要较好的计算机配置才能流畅运行,如VS Code+clangd和Clion;
  • 要么功能简陋,界面过时,缺少实时代码补全提示、实时错误提示等现代IDE必备的基本功能,如Dev-C++

作者认为,一个面向初学者、竞赛和教学的现代C/C++ IDE,至少具备下面的特征

  • 安装和使用直观简便,初学者不至于在还没有开始正式编程前就被复杂的安装和配置过程打消学习的热情;
  • 运行时对计算机配置要求不高,让更多经济条件一般的用户也能流畅的使用和学习;
  • 实时语法错误提示和直观易用的调试,尽量减少初学者编程试错的成本

但除了这几点外,作为一位软件工程课程的教师,作者认为还有很重要的一点,就是要尽量让用户在一开始就能够培养良好的编程习惯,所以:

  • 必须提供实时补全功能,这样用户才不会为了输入方便而使用尽可能简单的变量名
  • 自动缩进和排版,尽量让用户在一开始就能写出排版良好的程序
  • 提供更多的重构功能,尽量减少用户改进和完善程序结构的成本

这些构成了小熊猫C++最基本的需求假设。

小熊猫Dev-C++与Dev-C++

小熊猫C++前身——小熊猫Dev-C++的开发最初是从修改和完善Orwell Dev-C++ 5.11版本开始的。

Dev-C++最初是由bloodshed.net基于Delphi开发的轻量级windows开源C/C++集成开发环境,2003年后停止开发。后来orwell在其基础上继续进行完善,称为Orwell Dev-C++,2012年发布5.11版后停止开发,这也是国内目前使用最多的Dev-C++版本。

如前一节所述,Dev-C++是一个轻量的C/C++ IDE,但是其存在不少使用上的不便之处。比如,如果打开了符号补全功能,在输入’(‘时它会自动在后面增加一个对应’)’。在输入完括号之中的内容后,必须按->键跳过这个括号,然后再去输入后面的内容,这是很别扭的。所以很多用户在安装完Dev-C++之后,第一件事就是关掉符号补全功能;再比如说,它需要按ctrl+enter来打开补全提示,对于使用中文输入法的用户来说,必须手动去配置里修改快捷键,才能使用这个功能;还有,它的调试功能和按钮设计和主流IDE相差甚多,等等。

从2020年下半年开始,作者根据自己的编程和教学经验,在Orwell Dev-C++ 5.11基础上开始,以大约一周一次新版本发布的速度开始开发新的版本,并取名为小熊猫Dev-C++。最初的几个版本只是对一些基本编辑功能如符号补全等进行完善,以及对调试等用户界面进行调整;后来逐步开始对代码分析等核心模块进行大的修改,实现了对STL常用类的支持,并开始加入实时代码补全提示、实时语法错误提示等新的功能。

到2021年8月发布的最后一个版本(6.7.5版),小熊猫Dev-C++已经有了这些主要的改进:

  • 优化改进代码补全提示功能:
    • 实时显示补全提示
    • 补全#预处理指令
    • 补全#include头文件名
    • 补全C/C++关键字
    • 补全时Insert用户代码模板等
    • 支持STL容器类
    • 支持C++11智能指针
  • 修正了代码分析器的一系列bug,更好的支持C++,能够正确的解析和补全提示mingw gcc 9.2, mingw-w64 gcc 10.2自带标准头文件
  • 代码分析器优化和速度提升。代码载入、编辑和显示代码提示时无明显卡顿或停滞。
  • 在换行、保存文件时自动检查语法错误,用波浪线标记错误
  • 用户编辑界面增强和改进:
    • 支持打开、编辑和编译UTF-8编码的源代码文件
    • 输入时自动覆盖匹配的’}’,’>’,’)’等符号
    • 暗色配色方案(包括面板和工具栏)
    • 使用不同颜色区分局部变量、全局变量、函数、类定义等;
    • 使用不同颜色突出显示字符串中的转义字符
    • 使用不同颜色区分嵌套括号
    • 高亮当前文件中所有选中的单词等
  • 改进搜索功能和界面:
    • 增加对正则表达式的支持
    • 在搜索结果界面中改用树形结构保存和展示搜索历史
  • 改进调试功能和界面:
    • 增加调试工具栏
    • 在调试时准确更新监视窗口中的信息(如不同函数中的同名局部变量等)
    • 改进gdb主控台,模拟gdb命令行界面
    • 隐藏/显示发送给gdb的指令
    • 增加局部变量列表
    • 增加调用栈列表
    • 增加断点列表和设置断点条件
  • 增加重构功能,包括:
    • 符号重命名
    • 提取宏定义
  • 改进结构浏览器:
    • 正确显示当前程序中的宏、类型、类、变量和函数定义
    • 按照类型或者字典序进行排序
    • 显示/隐藏继承成员
    • 提升内容加载速度。对于大文件如GL/glew.h,加载时间从大于20秒减少到不到0.1秒(6.4-beta1版本加入)。
  • 增加文件视图,可以直接在视图中浏览和打开文件

小熊猫C++的新改进

随着开发的不断深入,作者发现,由于Dev-C++所使用的Delphi 7版本太过于老旧,在其基础上进行改进和开发越来越显得事倍功半。比如,为了支持现在流行的暗色程序界面,作者花了约1周时间去覆写Delphi的一些基本控件,最终的实现效果也仅仅是不那么难看。而对于高分辨率显示器、大字体支持等一些新的要求,即使是最新版的Delphi也根本就没有提供现成的解决方案。同时,作者也希望将来如果某一天学校开始推行去windows教学的话,新版的IDE能够直接在Linux下使用。

因此,在综合考虑之后,笔者决定使用Qt开发一个全新的C/C++ IDE。为了和之前的小熊猫Dev-C++区分,这个版本被命名为小熊猫C++。

小熊猫C++不仅仅是使用Qt对小熊猫Dev-C++功能的完全复制,它还引入了大量新的功能:

  • 兼容Linux系统
  • Git版本管理
  • 试题集(使用预定义的输入/输出数据运行和自动测试程序是否正确)
  • 基于Competitive Companion的OJ网站支持
  • 调试改进
    • 支持调试协议gdb/mi,以及基于该协议的调试内容显示改进
    • 内存视图
    • 支持调试时输入重定向(仅windows下启用gdb server模式时)
  • 用户界面改进
    • 完善的多显示器、高DPI大字体支持(包括字体和图标)
    • 更加美观的暗色主题支持
    • 更多的编辑器配色设置选项
    • 英文和中文可以使用不同的字体
    • Fire Coda等字体的连字显示支持
    • 支持设置颜色透明度
  • 编辑功能改进:
    • 更准确的自动缩进计算
    • 更准确的代码折叠计算
    • “使用特定的字符集打开文件”支持更多的字符集
  • 代码补全提示改进:
    • 全新的表达式解析处理,可以对更复杂的表达式(如(pNode+1)->)进行代码补全提示
    • 支持中文标识符
    • 支持C++ 14的using 类型别名定义
    • 支持C风格的枚举变量定义
    • 支持带参数的宏定义
  • 新增TODO视图
  • 全新的“在文件中查找/替换”界面
  • 全新的书签界面
  • 新增GLSL语言编辑支持等
最后修改 October 3, 2022: update (b338829e)