18 Matching Annotations
  1. May 2025
    1. 公理

      使用公理:通过公理和逻辑推理来定义语义。

      • 公理:公理是一些基本的、不可证明的假设,它们被认为是自明的真理。在公理语义学中,公理用于描述程序的基本行为和性质。
      • 逻辑推理:逻辑推理是从公理出发,通过逻辑规则推导出新的结论。在公理语义学中,逻辑推理用于证明程序的正确性和性质。

      假设我们有一个简单的程序:

      x = x + 1

      我们想用公理语义学来定义这个语句的语义。

      公理: * 赋值公理:赋值语句 x = e 的语义是:在执行后,变量 x 的值等于表达式 e 的值。 * 加法公理:加法表达式 a + b 的语义是:结果等于 a 和 b 的和。 逻辑推理: * 从公理出发,我们可以推导出:

      执行 x = x + 1 后,变量 x 的值等于 x 的原值加 1。

    2. 公理语义学,如:谓词变换语义学、代数语义学。

      公理语义学(Axiomatic Semantics)

      • 谓词变换语义学:使用谓词逻辑来描述程序状态的变化。
      • 代数语义学:使用代数方法来定义程序的行为。
    3. 操作语义学,例如抽象机(象SECD抽象机),着重于描述语言的过程;

      操作语义学(Operational Semantics)

      • 关注过程:着重于描述语言的执行过程。
      • 抽象机:例如 SECD 抽象机,用来模拟语言的执行过程。
    4. 指称语义学,着重于语言的执行结果而非过程,包括域理论;

      指称语义学(Denotational Semantics)

      • 关注结果:着重于语言的执行结果,而不是执行过程。
      • 域理论:使用域理论来描述计算结果。
    5. 精确地定义

      通过符号和公式,精确地定义和解释程序设计语言的语义,使其形式化。

    6. 语言的形式语义是用数学模型去表达该语言描述的可能的计算来给出的。

      形式语义学使用数学模型来表达程序设计语言描述的计算过程。

    7. 在计算理论中,形式语义学是关注计算的模式和程序设计语言的含义的严格的数学研究的领域。

      形式语义学是计算理论中的一个领域,主要研究计算模式和程序设计语言的含义,并且使用严格的数学方法来进行研究。

    1. Go

      Go 语言本身没有显式的“迭代器类型”,不像 Python 有 iter() 和 next(),也不像 Java 有 Iterator 接口。

      在 Go 中,迭代是通过 range 关键字实现的,它是语言内建的语法结构,背后确实有迭代逻辑,但对程序员是“隐藏”的,不需要也不能直接访问一个“迭代器对象”。

    2. for

      iter() 和 next() 是 Python 代码的一部分吗?

      是的,iter() 和 next() 是 Python 的内建函数,是标准语法的一部分。

      如果不用 for,而是用 iter() 和 next() 一个个取,代码会长什么样?

      可以完全不用 for 循环,手动使用它们来遍历一个可迭代对象。

      ```python my_list = ["苹果", "香蕉", "橘子"]

      创建一个迭代器对象

      it = iter(my_list)

      手动使用 next() 逐个取出元素

      print(next(it)) # 输出:苹果 print(next(it)) # 输出:香蕉 print(next(it)) # 输出:橘子

      print(next(it)) # 如果再调用一次,会抛出 StopIteration 异常

      ```

      也可以用 while 循环来模拟 for 的行为:

      ``` it = iter(my_list) while True: try: item = next(it) print(item) except StopIteration: break

      ```

    3. 转换

      可以用 iter() 把 iterable 变成 iterator: ```python my_list = [1, 2, 3] it = iter(my_list) # 现在 it 是一个迭代器 print(next(it)) # 输出 1 print(next(it)) # 输出 2

      ```

      Another example:

      ```python my_list = [1, 2, 3] # 这是一个可迭代对象 my_iter = iter(my_list) # 现在我们把它变成了一个迭代器

      print(next(my_iter)) # 输出 1 print(next(my_iter)) # 输出 2 print(next(my_iter)) # 输出 3

      ```

      Tips: - my_list 是 可迭代对象,你可以用 for 循环遍历它。 - my_iter 是 迭代器,你可以用 next() 一步步取出元素。

      🧠 一个比喻帮助理解: * 可迭代对象就像一本书 📖,你可以翻页阅读。 * 迭代器就像一个书签 📎,它会记住你读到哪一页了,每次翻一页,直到读完。

    4. 迭代器

      iterator(迭代器): - 是一个对象,它实现了 iter() 和 next() 方法,可以逐个取出元素。 - 是实际执行“逐个取出元素”的对象,它记得当前的位置。

    5. 可迭代者(iterable)

      iterable(可迭代对象): - 可以被 for 循环使用的对象,比如 list、str、dict 等。(是可以被“迭代”的对象,比如列表、字符串、字典等。)

    6. for value in iterable: print(value)
      • iterable 是一个可以被遍历的对象,比如列表、字符串、集合等。
      • for 循环会自动在背后调用 iter() 来生成一个迭代器对象,然后用 next() 一次次取出元素。
      • 你不需要写 iter() 或 next(),Python 会帮你做这些事。
    7. 一些面向对象语言比如C#、C++(后期版本)、 Delphi(后期版本)、Go、Java(后期版本)、Lua、Perl、Python、Ruby,提供了迭代一个容器对象的元素的内置方式,而不用介入一个显式的迭代器对象。

      在这些编程语言中(包括 Python),我们不需要手动创建一个“迭代器对象”,也能遍历容器(比如列表、数组、集合等)里的内容。

      语言本身已经内建了“自动帮你迭代”的机制,只需要写一个简单的语句,比如 for 循环。

  2. Mar 2025
    1. 続きぐあい

      指的是某件事情或一系列事情的“继续的情况”或“后续进展的状态”。

  3. Oct 2024
    1. 例如,某位历史学家在研究二战期间欧洲局势演变时,利用ArchiveBox保存了大量当时报纸报道、政府公告等原始材料,为论文撰写提供了坚实基础。

      ChatGPT味道不要太重。

  4. Apr 2024
    1. “妇女”这两个字,将在什么时代才不被重视,不需要特别的被提出呢?

      起头提出问题。作者在质疑一个时代何时能够不再特别强调“妇女”这个概念,暗示着一个理想的社会状态,即性别平等已经实现到不需要特别提出妇女问题的程度。这表达了对于性别平等的追求和对现实中妇女地位问题的批判态度。作者希望看到一个社会,其中妇女被自然地视为平等的成员,而不是需要特别关注或保护的群体。这也反映了作者对于性别角色和社会期望的深刻反思。