为什么我反对炒作中文编程
什么是中文编程 中文编程(或者称为中文编程语言)是指使用中文来书写的程序设计语言,其目的是为了减少对英语的学习,将精力集中在程序设计上,并且便于程序交流和代码维护。 摘自百度百科。 我认为中文编程可以从浅入深地划分为三种类型: 使用中文标识符 使用中文关键字 使用中文语法 使用中文标识符 这种中文编程是入门门槛最低的:绝大部分现代语言的编译器都支持 Uni...
什么是中文编程 中文编程(或者称为中文编程语言)是指使用中文来书写的程序设计语言,其目的是为了减少对英语的学习,将精力集中在程序设计上,并且便于程序交流和代码维护。 摘自百度百科。 我认为中文编程可以从浅入深地划分为三种类型: 使用中文标识符 使用中文关键字 使用中文语法 使用中文标识符 这种中文编程是入门门槛最低的:绝大部分现代语言的编译器都支持 Uni...
前段时间,我想要通过提供选项框的形式来允许用户自定义界面 UI 的字体和大小,就像这样: 然后生成形如 * { ... } 的 QSS 字符串,通过 qApp->setStyleSheet(qss) 应用给所有窗口组件。 然而奇怪的事情出现了,我在主界面有两个 QTextBrowser 组件,一个是通过 new QTextBrowser 出来然后 addWidget 到布局上的...
概览 在整个 2022 年,Rust 一共发布了 1.58.0 ~ 1.66.0 共 9 个版本,让我们感谢 Rust 团队一整年的付出。 通常来说,大部分人都不是喜欢追着 Release Note 啃的类型,因此对于大部分人而言,Rust 的语法就只有书上写出来的那一些。这也是我撰写这篇文章的目的:总结和记录 Rust 整个 2022 年稳定的语法,让更多人意识到 “原来 Rust 还...
测试环境 OS: Ubuntu 22.04 CC: GCC 11.2.0 重载决议 重载决议(Overload Resolution)的定义,摘自 cppreference: 为了编译函数调用,编译器必须首先进行名字查找,对于函数可能涉及实参依赖查找,而对于函数模板可能后随模板实参推导。如果这些步骤产生了多个候选函数,那么需要进行重载决议选择将要实际调用的函数。 ...
Type-C 接口 Type-C 接口的规范大致与 USB 3.1 规范同时期发布,但是由于在 USB 3.2 规范中才引入了 Type-C 的双通道传输模式,因此我们通常仅基于 USB 3.2 及以后的规范版本来讨论 Type-C 接口。 Type-C 接口的针脚定义我曾经在 USB 2.0 与 USB 3.2 一文中介绍过,为了方便,我将其搬运到本文中: Type-C 公头针脚定...
Android C++ 程序开发现状 在 Android 下开发 C++ 程序,我见过绝大多数人都是不使用任何语法插件,就靠硬写,写完之后再根据编译报错来修改语法错误。这也怪不得程序员,一方面,Android 使用 Arm 平台的 clang 编译器,跟 x86 平台的开发环境并不是很兼容;另一方面,Android 要求我们将 C++ 程序放在 vendor 目录下,但是我们包含的头文件却...
模板 在为静态类型语言开发代码时,我们很经常遇到这样的情况:我们需要为多个数据类型实现相同的功能。放在 C 语言中,我们不得不为他们各自定义一个函数或结构体,例如: int add(int x, int y); unsigned addu(unsigned x, unsigned y); float addf(float x, float y); // ... struct Vecto...
QTimer 基础用法 QTimer 提供了计时器的高级编程接口,我们可以通过 Qt 的信号槽机制快速启用一个定时器: QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, recv, &recv::slot_function); timer->start(1000); 这将会使 r...
前言 目前,大部分的 AppImage 的教程与工具都建议你在最低所支持的系统上进行编译打包,这是由于 Linux 系统的兼容性,在旧版本系统打包的软件可以正常在新版本系统中运行,反过来则不行。 但是这一点对于 Qt 用户尤其是 Qt6 用户而言很不友好:一方面,在旧版本的 Linux 系统上很难安装高版本的 Qt,另一方面,过于老旧的 GCC 不支持大量的 C++ 新特性,需要对代码进...
复合语句作为表达式 在使用 Rust 的过程中,常常会觉得 Rust 任何一个 block 都能返回值的特性太赞了,这可以极大地限制一些临时变量的作用域,例如: fn main() { let value: Option<u8> = { let string = "123".to_owned(); if let Ok(temp) = s...