仓库源文站点原文


layout: post comments: true title: "通用型的中文编程语言探讨之一: 高考" description: 由高考开设编程科目说开去, 设想一种通用型的中文编程语言. As university entrace exam in China starts to include programming, here we discuss about a general-purpose programming language in Chinese. date: 2018-01-05 00:00:00 -0700

categories: 语言设计

在可预见的未来, 高考仍是最重要的也最有社会影响力的人才选拔机制. 很久没有关注, 最近得知高考自选科目中开始增加了编程一项(见如何评价2017浙江高考七选三科目中包含技术?). 虽然个人对编程是否应该进入高考仍有保留看法, 但至少全民(都应该可以)编程这一趋势已经很明显了. 这应该是中文编程兴起的另一个契机(前文中文编程兴起的必然性讨论了一些更技术性的原因).

看了2017年浙江的高考卷, 感觉算法/体系/基础知识比较少, 比较偏技术. 相信以后会逐渐调整. 毕竟技术更新快, 而前者更经得起时间考验也更有含金量. 个人觉得算法在短期内仍需要一个具体的编程语言作为载体, 毕竟教学实践中不可能作纯粹的纸上算法. 那么, 一个适合算法设计和实践的中文编程语言, 假如能在高考卷中使用, 相信会是一个中文编程的里程碑.

本文试图列出一些(当然绝不是全部)这一假想中的语言/开发环境的功能特性和示例, 希望抛砖引玉. 其中, 对每项功能的必需性按照一到三排列, 一最高.

版权/安全

功能/API

语法设计

(将在program-in-chinese/overview持续改进和更新)

定义 二分查找(数组, 目标) {
  左索引 = 0
  右索引 = 取长度(数组) - 1
  位置 = -1

  当 左索引 ≤ 右索引 且 位置 为 -1 {
    中索引 = 向下取整((左索引 + 右索引) / 2)
    如果 数组(中索引) 为 目标 {
      位置 = 中索引
    } 否则 {
      如果 数组(中索引) > 目标 {
        右索引 = 中索引 - 1
      } 否则 {
        左索引 = 中索引 + 1
      }
    }
  }
  返回 位置
}

Python:

def binarySearch(array, key):
    left = 0
    right = len(array) - 1

    res = -1

    while left <= right and res == -1:
        mid = (left + right) // 2

        if array[mid] == key:
            res = mid
        else:
            if array[mid] > key:
                right = mid - 1
            else:
                left = mid + 1

    return res

性能

开发环境

项目开展与维护

一些相关讨论和参考:

讨论: 适合中文用户的编程语言和IDE, 侧重于现有语言/IDE不具备的特性 · Issue #11 · program-in-chinese/overview