Programming languages 理论计算机科学的技术定义是什么?包括哪些子字段?

Programming languages 理论计算机科学的技术定义是什么?包括哪些子字段?,programming-languages,computer-science,theory,complexity-theory,Programming Languages,Computer Science,Theory,Complexity Theory,理论计算机科学的技术定义是什么?(或者,应该是什么?) 它包括哪些主要的子领域,以及将它们与计算机科学的其他领域区分开来的共同点是什么 更具体地说:如果某些特定的研究有直接的实践动机、目标和结果,但大多涉及非常抽象的方法,那么它是否是理论计算机科学 需要考虑的两个例子: “用于刚性变换混合的双四元数”(用于动画的旋转和变换的更好数学表示) 基于效果的程序转换的关系语义 “动态分配”(通过指称语义进行编译器优化): [维基百科的文章只给出了一个模糊的定义和一长串的子领域。你应该接受没有比这个更好

理论计算机科学的技术定义是什么?(或者,应该是什么?)

它包括哪些主要的子领域,以及将它们与计算机科学的其他领域区分开来的共同点是什么

更具体地说:如果某些特定的研究有直接的实践动机、目标和结果,但大多涉及非常抽象的方法,那么它是否是理论计算机科学

需要考虑的两个例子:

“用于刚性变换混合的双四元数”(用于动画的旋转和变换的更好数学表示)

基于效果的程序转换的关系语义 “动态分配”(通过指称语义进行编译器优化):

[维基百科的文章只给出了一个模糊的定义和一长串的子领域。你应该接受没有比这个更好的定义了吗?]


编辑:我想这个问题可以归结为“在计算机科学的背景下,‘理论’一词是什么意思?”。看看at这个词的6种不同含义,我认为它们都不完全合适。我想一个理论的数学意义完全适合数学领域,但不适合其他领域,而对于VLSI,机器学习和计算生物学,从它基本上不适合。

此链接包含一系列子领域:,我不会在这里复制它们,因为链接可能会发生变化,这将是多余的

另外,我想起了一个人的话,不记得是谁,大意如下:

数学就是一切 数学家是这样做的


这似乎是适用的。

我认为区分理论和应用的最简单方法是查看计算机领域的定义。如果该领域的工作是基于计算机是一个物理对象或系统的假设,那么它可能是一个应用程序。另一方面,如果该领域的工作是基于计算机是一个抽象(通常是数学)对象的假设,那么它可能是理论。所以,当你决定是否说自己是一名理论计算机科学家时,我想你只需要问问自己,“什么是计算机?”


(对我来说,这绝对是一个抽象的对象)

这些似乎是一般计算机科学的子领域。我问的是关于理论计算机科学的问题。哪一个在TCS中?@RD1:你真的没有能力自己确定吗?我可以用一种我希望能达成一致的方式对它们进行分类。我最不确定的是:数据结构和算法;计算机科学与博弈论;密码学和安全;编程语言。我想对于这些,我会将它们分类为包括一些TC和一些非TC。当我将我的列表与维基百科的列表进行比较时,它们是不一致的,所以我移动了一些。总的来说,我不知道为什么有些字段是TCS,而有些字段不是。许多人把我归类为理论计算机科学家,但我声称我没有——我有资格这样做吗?@RD1:当然,要成为理论科学家,你只需要做理论。如果你这么做,你就是理论上的。如果你做实际的事情,你就不是。除了我在文章中提到的那样,我看不出创作一些明确的东西有什么真正的目的。我用“理论”的方法做实际的事情。我认为这是很常见的,当然在我的领域也是如此。关于一些确定的事情-是的,你可能是对的。