神秘的编程语言是一种旨在挑战语言设计规范的编程语言。 它是一种旨在表达观点的语言 。 重点可能是什么:挑战本身就是创造一些不寻常的东西,开一个精心的玩笑,创造一种语言作为艺术表达,测试有前途的编程想法等等。

这应该表明,没有一种简单的方法可以正确地分类或组织所有不同的深奥编程语言,因为根据定义,它们违反了规则。 但是我们可以使用一些概念和组织原则来更好地了解周围的社区。 这样我们就可以了解人们使用它们的目的,或者以此信息为灵感来创建自己的深奥语言。

一些有用的概念

图灵塔皮特

Turing tarpit是一种Turing完整的编程语言,但是实际上不可用。 图灵完备的语言可以模拟任何图灵机。 实际上,您可以使用它编写任何程序。 因此,从理论上讲,所有这些语言都具有同样强大的功能,但同时也是图灵Tarpit的语言使编写任何类型的程序变得异常困难。 这样做的常见方法是减少可用符号的数量:甚至尝试编写仅包含8个字符的Hello World程序。

奎因

quine是一个程序,可产生其源代码的副本作为输出。 该程序不能是空程序,即使该空程序是特定语言的有效程序也是如此。 从磁盘或内存中读取源代码也被认为是作弊行为。 “奎因”这个名字是由道格拉斯·霍夫施塔特(Douglas Hofstadter)在他的著作《 哥德尔·埃舍尔·巴赫:永恒的金色辫子 》中创造的,以纪念哲学家威拉德·范·奥曼·奎因。 因此, quine的概念并非深奥的编程语言所独有,但在编写一个语言时却是典型的首要挑战。

高尔夫代码

打高尔夫是一种竞赛,其目的是编写实现某种算法的最短程序。 在这种情况下,最短意味着具有最短的源代码。 这并不意味着二进制可执行代码的大小较小。 打代码高尔夫被称为“高尔夫脚本”。 还有所有其他与编程相关的竞赛,这些竞赛给了观众很多机会,经常鼓励创意作弊。 一般来说,挑战是许多深奥的编程语言的动力。

混淆

混淆的概念(即隐藏消息的真实含义)显然不是深奥的编程语言甚至一般的编程所独有的。 但是它在许多深奥的编程语言中有很大的相关性。 尤其是如果您打算从更广义的意义上来说会误导或迷惑收件人。 您不是在隐藏消息是因为消息本身很重要,而是因为隐藏的形式本身就是目标。 实现此目的的一种典型方法是减少语言的符号数量,但是您也可以伪装成看起来像普通文本或图像的编程语言。

非确定性

在这种具有误导性或使听众困惑的更大含义中,不确定性也可以用于实现相同的目标。 非确定性语言是这样一种语言,在给定程序当前状态的情况下,无法始终预测下一个状态。 该概念在正常的编程语言中有一定的用途,主要是由于运行时的情况无法预测。 但是通过某些深奥的编程语言,通过随机化变量甚至随机化指令本身,将其推到了极致。

深奥的编程语言组

正如我们已经说过的,我们不能提供一种组织所有深奥的编程语言的详尽方法。 即使有人可以找到它,其他人很快也会发明一种新的深奥的编程语言,只是使其无效。 因此,我们试图做的只是提供一些组或类别,以更好地理解和探索深奥的编程语言的世界。

  • 具有客观价值的语言 ,尽管这一价值不一定是外在的或典型的。 一个基本的示例是一种旨在赢得代码高尔夫比赛的语言:可以评估其价值,但在深奥的编程语言社区之外没有任何意义。 但是,更有用的类型是用于实现非典型目标的类型,例如绕过安全措施(请参阅JSFuck )或定义Chomsky层次结构的Type-0语言(请参见Thue )。
  • 无法使用的语言 。 这些语言使用起来非常困难。 这可能是设计人员的明确目标,也可能只是设计本身的偶然事件。 用户甚至可能会发现使用它们一段时间的乐趣。 通过设计和偶然来实现不可用语言的一种典型方法是极简主义(请参阅Brainfuck )。 但是,如果您想要几乎不可能使用的东西,则需要某种语言,例如使用三元系统并有目的地自我更改的语言(请参阅Malbolge )。
  • 测试一个想法或证明某种东西的语言 。 这些语言可能没有做任何有用的事情,但是它们是新概念或证明某些东西的良好测试平台。 例如,一种将程序排列在二维网格中的语言(请参阅Befunge )或一种几乎纯的功能语言(请参阅Unlambda )
  • 艺术语言 。 这些语言的设计具有一定的艺术价值。 您可能会争辩说它们实际上是测试语言组的一部分或具有客观价值的语言。 我们将它们放在不同的类别中,因为它们看起来不像编程,但是它们往往看起来很有趣,即使您可能不想使用它们。 例如,它们看起来像抽象艺术(请参阅Piet )或类似莎士比亚的戏剧(请参阅莎士比亚 )。
  • 开玩笑的语言 。 这些是幽默感很强的人发明的语言。 就像一个人说:“您想听个笑话吗? –在结束之前,它会读到《战争与和平》 –我们的一生都是在开玩笑!»。 一个示例是讽刺性语言,其中甚至参考手册也是一个玩笑(请参阅INTERCAL )

一些著名的深奥语言

当然,这并不是著名的深奥编程语言的详尽列表,而是适度地列出了一些以其成功或独特性而闻名的语言。

Befunge

Befunge的主要深奥特征是程序以二维网格排列。 它也是基于堆栈和反射性语言的,因此它允许程序进行自我更改。 主要目标是设计一种尽可能难以创建编译器的语言。

原始版本(现在称为Befunge-93)不是图灵完整的,因为它将网格大小限制为80×25。 但是一个叫做Befunge-98的新版本取消了这个限制,它应该是图灵完整的。 Befunge催生了一整类称为Fungeoid的多维语言。

Befunge具有用于控制上,下,左,右方向的命令,因此还可以创建一个循环,以及用于输出,二进制操作等的更传统的命令。

Hello Word程序如下所示。

>              v
v  ,,,,,"Hello"<
>48*,          v
v,,,,,,"World!"<
>25*,@

脑干

它可能是所有深奥的编程语言中最著名的,但以其极简主义而著称。 既有可用命令的数量,也有非常小的编译器。 实际上,第二个条件是第一个条件的原因,因为作者想用尽可能小的编译器创建一种语言。 作者创建了仅使用240个字节的编译器,有时后来有人创建了仅100个字节的编译器。 该目标的自然结果是,尽管图灵是完整的,但该语言却难以使用。 简而言之,它是一个图灵tarpit。

有时会使用经过审查的拼写来称呼它,例如Br​​ainf * ck或许多其他变体。

该语言由八个不同的命令组成,这些命令操纵一个数据指针和两个字节流用于输入和输出。 它还支持循环。 除代表命令的字符外,其他字符也被视为注释,并被编译器忽略。

这是该语言工作方式的一个示例(摘自Esolangs Wiki )。

Code:   Pseudo code:
>>      Move the pointer to cell2
[-]     Set cell2 to 0
<<      Move the pointer back to cell0
[       While cell0 is not 0-       Subtract 1 from cell0>>      Move the pointer to cell2+       Add 1 to cell2<<      Move the pointer back to cell0
]       End while

Hello World程序如下所示。

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

如果您想了解更多信息,可以在相应的Wikipedia页面或Esolangs页面上看到。

INTERCAL

INTERCAL可能不是第一个深奥的编程语言 ,但它肯定是第一个著名的编程语言 。 几岁了? 它创建于1972年,第一个实现是用打Kong卡制作的。 该语言的目的是模仿,但也可以使程序世界完全陌生。 这组作者说 ,这个名字不是首字母缩写词:

编译器的全名是“没有可发音的缩写的编译器语言”,由于明显的原因,其缩写为“ INTERCAL”。

INTERCAL参考手册(PS格式)的其余部分也充满了无意义或幽默的陈述。 这既是针对他们描述的语言,又是针对他们的操作方式。 例如,这是关于变量的部分

INTERCAL仅允许2种不同类型的变量,即16位整数和32位整数。 这些
分别由一个点(。)或两个点(:)表示,后跟1到65535之间的任意数字,
包括的。 这些变量只能包含非负数; 因此,它们具有以下范围 值:0到65535和0到4294967295。注意:.123和:123是两个不同的变量。 另一方面, .1和.0001相同。 此外,后者可能不会写为1E-3。

该语言还允许使用修饰符PLEASE. 但是,它也需要使用适当数量的此关键字。 不能太少或太多使用它,也就是说,您需要表现出适当的礼貌。 真正不有趣的部分是它是原始手册中未记录的功能。 玩笑手册的玩笑手册可能还可以,但是不完整的手册是不可接受的。

这是用C:C-INTERCAL实现的INTERCAL版本中的Hello World。

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

简而言之,INTERCAL是一个非常精心的笑话。 这种笑话可能会让您钦佩其创造者的毅力或怀疑它的健全性,或两者兼而有之。

JSFuck

Brainfuck的成功刺激了许多派生语言的创建,以至于无法一一列举。 但最著名的是JSFuck 。

JSFuck不是一种适当的语言,但是它更像是一种Javascript的深奥编程风格,只需要使用6个字符即可。 生成的程序是有效JavaScript程序,实际上,它的发明是为了绕过诸如恶意软件检测之类的安全技术。 它的属性使其对于代码混淆也很有用。

之所以有效,是因为您可以将Javascript中的任何表达式评估为任何类型。 因此[]代表了一个空数组,但是通过在其前面加上+ ,可以强制将其赋值为数字0。要获得像a这样a字母,可以操纵值false ,等等。最终结果是一种非常冗长的语言:相当于alert("Hello World!")长度为22948个字符。

马尔博格

Malbolge是一种专门设计成几乎无法使用的语言:用它自己的创造者的话来说就是“通过违反直觉的'疯狂操作',三进制算术和自我更改代码”。 实际上,甚至连作者也从未用它编写过一个工作程序。 第一个程序由另一个实现启发式搜索算法的程序生成。 该语言不是图灵完整的语言,它也是基于但丁·阿利吉耶里(Dante Alighieri)的《地狱》(Inferno)中地狱的8个圆圈——Malebolge的错拼。 因此,它实际上没有任何兑换质量。

我不会尝试描述它,因为整个事情显然是一种沮丧的练习。 但是,有一个值得注意的“疯狂操作”值得一提:加密。 该语言应该在三元虚拟机上运行,​​并且具有三个寄存器,其中之一包含指向当前指令的指针,并且被称为 。 执行该指令后,值的模94 替换其中的任何内容 然后根据加密表对结果进行加密。 的确,欢迎来到地狱。

一些勇敢的灵魂创建了一个Hello World程序。

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

皮耶特

Piet是一种程序语言,以Piet Mondrian的风格表示为抽象艺术绘画。 它是基于堆栈的,并且Turing已完成。

根据色相和亮度订购了18种颜色,另外还有黑色和白色。 最后两个具有特殊含义,用于控制流。 程序执行依赖于两个“指针”:方向指针和色块选择器。 DP可以向上,向下,向左和向右指向,而CC只能向左和向右指向。 这两个指针的组合决定了程序的执行:基本上是接下来执行哪个颜色块。 一个颜色块的大小代表一个整数。 当程序在不同的颜色块之间转换时,它们在色相和亮度上的差异决定了所执行命令的类型。 这些命令是常用命令,例如输出值,乘以等。

Hello World程序具有一定的美感。

Thomas Schoch在Piet中的Hello World

莎士比亚

莎士比亚是一种旨在具有以下功能的语言:“ 类似于莎士比亚戏剧的漂亮源代码 ”。 该语言几乎没有命令,并且在功能上类似于汇编语言,但是毫不奇怪,它很冗长。

变量必须在开头部分声明,并且其名称必须是有效的莎士比亚字符,例如Romeo或Juliet。 这些变量是堆栈,以后将在其上执行诸如pop,push和input / output的操作。 行为和场景的名称用作转到标签和某些条件语句的目的地。 字符(即变量)必须在舞台上被调用才能被操纵,并且舞台上一次只能有两个。

这些线通常代表数字常数:一些名词和形容词被转换为数值。

Hamlet:You lying stupid fatherless big smelly half-witted coward!Juliet:You are as villainous as the square root of Romeo!

诸如“记住”之类的特殊字词,或诸如“说出自己的想法”之类的组合词,可以执行命令。 这些是常规命令,例如将值压入堆栈字符,输出当前变量的值或相应的ASCII字符。

如果条件的条件为真,则条件语句由一个字符中的一个问题和另一个字符中的一个答案表示,这些问题决定了要去的地方。

Juliet:Am I better than you?Hamlet:If so, let us proceed to scene III.

《 Hello World》和莎士比亚剧一样长且富有成果。

The Infamous Hello World Program.Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.Act I: Hamlet's insults and flattery.Scene I: The insulting of Romeo.[Enter Hamlet and Romeo]Hamlet:You lying stupid fatherless big smelly half-witted coward!You are as stupid as the difference between a handsome rich bravehero and thyself! Speak your mind!You are as brave as the sum of your fat little stuffed misused dustyold rotten codpiece and a beautiful fair warm peaceful sunny summer'sday. You are as healthy as the difference between the sum of thesweetest reddest rose and my father and yourself! Speak your mind!You are as cowardly as the sum of yourself and the differencebetween a big mighty proud kingdom and a horse. Speak your mind.Speak your mind![Exit Romeo]Scene II: The praising of Juliet.[Enter Juliet]Hamlet:Thou art as sweet as the sum of the sum of Romeo and his horse and hisblack cat! Speak thy mind![Exit Juliet]Scene III: The praising of Ophelia.[Enter Ophelia]Hamlet:Thou art as lovely as the product of a large rural town and my amazingbottomless embroidered purse. Speak thy mind!Thou art as loving as the product of the bluest clearest sweetest skyand the sum of a squirrel and a white horse. Thou art as beautiful asthe difference between Juliet and thyself. Speak thy mind![Exeunt Ophelia and Hamlet]Act II: Behind Hamlet's back.Scene I: Romeo and Juliet's conversation.[Enter Romeo and Juliet]Romeo:Speak your mind. You are as worried as the sum of yourself and thedifference between my small smooth hamster and my nose. Speak yourmind!Juliet:Speak YOUR mind! You are as bad as Hamlet! You are as small as thedifference between the square of the difference between my little ponyand your big hairy hound and the cube of your sorry littlecodpiece. Speak your mind![Exit Romeo]Scene II: Juliet and Ophelia's conversation.[Enter Ophelia]Juliet:Thou art as good as the quotient between Romeo and the sum of a smallfurry animal and a leech. Speak your mind!Ophelia:Thou art as disgusting as the quotient between Romeo and twice thedifference between a mistletoe and an oozing infected blister! Speakyour mind![Exeunt]

ue

Thue是一种基于字符串重写系统(称为Semi-Thue系统)的编程语言。 它是非确定性的,遵循约束编程范例。 这意味着变量是根据约束条件定义的(例如,对或错)。 它是一个图灵柏油场。

在Thue的情况下,成本消耗由以下形式的替换规则列表表示:

<string>::=<replacement>

这种形式的特殊格式表示输入,输出或规则列表的结尾。

语言的不确定性可以通过指示相同字符串的两种可能替换来显示。 例如:

  • 您编写了一条规则,说字符串a可以替换为stupid
  • 您还编写了一条规则,说字符串a可以替换you are

执行程序时,可以用两个选项之一替换字符串a

规则列表后跟一个代表初始状态的字符串。

虽然编写有用的程序可能很困难,但至少通过深奥的编程语言标准,典型的Hello World相当容易理解。

a::=~Hello World!
::=
a

Unlambda

Unlambda是一种(几乎)纯功能语言,旨在显示一种纯功能语言(并且可能不实用)。 它基于组合逻辑 。 它是图灵完整的,并且是第一个功能齐全的图灵tarpit。 它依赖于一些功能,一个应用运算符` (反引号字符),并且还支持输入/输出。 从技术上讲,它仅适用于具有单个参数的函数,但是可以将多参数函数转换为一系列函数 。

Hello World程序看起来几乎可读。

r```````````.H.e.l.l.o. .w.o.r.l.di

其他有趣的深奥语言

Fugue是一种使用MIDI文件作为源代码的语言。 每个音符之间的间隔转换为特定的传统命令,例如输入/输出或加法。

Beatnik是一种基于堆栈的语言,由一系列英语单词组成; 空格和标点符号将被忽略。 根据单词在游戏Scrabble中的值,将单词转换为传统命令。

空格是一种玩笑语言,其中只有空格字符(例如制表符和空格)有效,而其他任何字符都将被忽略。 当然,这与忽略空白的编译器的通常行为相反。 鉴于这些特性,它可以在Polyglot程序中使用,也就是说,该程序对一种以上的语言有效。 只要其他语言不是Python,也不是空格重要的任何语言。

GolfScript是一种连接编程语言,旨在赢得图灵完成的代码高尔夫竞赛。

Snowflake是一种可逆的自我修改语言,每次运行时都对解释器和程序进行修改。

FRACTRAN是一种语言,其中的程序是分数列表和初始编号。 我不确定它的作用,但是它有一些作用,因为它有Wikipedia页面。

Iota和Jot是两种形式语言,每种语言被设计为最简单的形式系统。 从本质上讲,它们也可以视为极简的Turing tarpit编程语言。 两者都仅使用两个符号并执行两个操作。 称为Zot的后继者也支持输入/输出。

熵是一种非常恰当命名的编程语言,旨在接受放弃控制的想法。 程序的任何输出都是近似值,每次访问数据时都会对其进行随机修改。 该语言不会修改原始程序,因此每次运行时输出都会有所不同,但是会保留初始状态。 数据随机化的一个奇怪的副作用是Drunk Eliza ,这是经典Eliza程序的网络版本,治疗师似乎在喝醉。

莫妮卡利(Monicelli)是一种取笑的语言,以喜剧电影“ 我的朋友 ”( My Friends)为基础 。 一个典型的程序看起来像一系列毫无意义的意大利语短语。 令人惊讶的是,这是有道理的,因为用作灵感的电影还带有荒谬的短语。 这是疯狂的圈子。

摘要

深奥的编程语言世界既令人兴奋又令人发疯:没有规则,但有很多有趣的事情。 我希望能给您一个关于期望的窗口。

如果您想了解更多或参加这个社区,我建议您看看Esolangs 。 该网站以及Wikipedia是本文显示的大多数示例的来源。 在这里,您还可以在有关深奥编程语言的想法列表中找到一些启发。

您可能还会发现Marc C. Chu-Carroll的博客在过去的许多年里 化身为有趣的博客。 顾名思义,Bad Math意味着好数学,它主要用于数学。 尽管如此,它在名为“病理学编程(语言)”的系列文章中也对深奥的编程语言进行了许多分析。 例如,您会看到一个专门用于最小编程语言的语言 。

参考: 在Federico Tomassetti博客上,从我们的JCG合作伙伴 Federico Tomassetti 发现神秘的编程语言的奥秘世界 。

翻译自: https://www.javacodegeeks.com/2017/06/discovering-arcane-world-esoteric-programming-languages.html

探索神秘的编程语言的奥秘世界相关推荐

  1. 探索密码的奥秘_探索神秘的编程语言的奥秘世界

    探索密码的奥秘 神秘的编程语言是一种旨在挑战语言设计规范的编程语言. 它是一种旨在表达观点的语言 . 重点可能是什么:挑战本身就是创造一些不寻常的东西,开一个精心的玩笑,创造一种语言作为艺术表达,测试 ...

  2. c语言和Java你好世界,C编程语言之“你好世界”的例子

    在我们研究C编程语言的基本构建块之前,让我们看一下最基本的C程序结构,以便我们在后面得内容将其作为参考. C编程语言之"你好世界"的例子-1.jpg (37.41 KB, 下载次数 ...

  3. 罗塞塔语言包_罗塞塔代码(Rosetta Code)—揭开为世界提供动力的编程语言的奥秘

    罗塞塔语言包 It's no secret that the tech world is dominated by a relatively small pool of programming lan ...

  4. 深入剖析JVM的神秘内部,探索Java技术背后的奥秘

    文章目录 1. 介绍JVM是什么,为什么需要JVM 2. JVM的架构和组成部分,包括:类加载器.解释器.即时编译器.垃圾收集器等. 3. JVM的工作流程和运行机制,包括代码的编译.类加载.实例化和 ...

  5. 跟寻智能色选机,一起探索神秘的色彩世界

    色选机,一种基于物料颜色.形状或质地差异,再通过光电检测.图像处理等手段来实现物料分选和净化的工业化应用终端,可满足特种物料等多种产品的色选要求,如大米.茶叶.豆类.药材.种子.虾皮.坚果.各类干货. ...

  6. JavaScript:探索神秘的旁门左道奇淫技巧

    引言: JavaScript作为一种广泛使用的编程语言,具有出色的灵活性和强大的功能.除了其常规用途外,它还隐藏着一些奇淫技巧,这些技巧可以让你在编程过程中事半功倍.本文将揭示JavaScript的一 ...

  7. python 分类变量回归_极简Python带你探索分类与回归的奥秘

    为何使用人工智能和机器学习? 地球的未来在于人工智能和机器学习.如果对这些技术一无所知,人们很快会发现自己落伍了.世界发展日新月异,每天都发生着不可思议的变化.在人工智能和机器学习中,有许多实现和技术 ...

  8. 我的世界服务器神秘修改节点,我的世界神秘节点指令 | 手游网游页游攻略大全...

    发布时间:2018-03-04 我的世界神秘时代4是非常好的一个mod里面有很多的东西哦,而且在游戏中是有创造指令的今天游戏园小编就为大家带来了我的世界TC4创造指令教程,希望大家能够喜欢! 指令索引 ...

  9. 我的世界服务器神秘修改节点,我的世界NBT指令修改神秘时代4MOD方法详解

    我的世界NBT指令修改神秘时代4MOD方法详解,详细描述了我的世界NBT指令修改神秘时代4MOD方法,希望这篇我的世界NBT指令修改神秘时代4MOD方法详解,能够帮助到各位正在玩我的世界的玩家朋友们! ...

最新文章

  1. 高并发服务优化篇:从RPC预热转发看服务端性能调优
  2. 如何把文件模版上传到SAP数据库层.
  3. mysql 安装_源码安装mysql
  4. 基于Libevent的HTTP Server
  5. #化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat
  6. SQLmap学习使用
  7. Ugly Number leetcode java
  8. 【贪心 哈夫曼树】bzoj2923: [Poi1998]The lightest language
  9. 移动端常用Axure组件库 元件库下载 包含微信 支付宝常用组件元素
  10. android实时声音信号波形_android绘制播放音频的波形图
  11. Trace32 simulator调试以及简单实用命令介绍
  12. mysql不同分数的人数,mysql如何统计每个专业分数段的人数
  13. 基于微信在线电子书阅读小程序设计与实现开题答辩PPT
  14. 有效的运营技巧让中国卖家在跨境电商领域销量翻番
  15. 书籍特别推荐:2018-06薛兆丰经济学讲义+魔鬼经济学(四本)
  16. 基础编程题目集-7-32 说反话-加强版 (20分)
  17. 中国当代新型恋爱关系白皮书
  18. java 下载样板Excel文件
  19. 小游戏 (最少线段连线问题)
  20. IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

热门文章

  1. [开发笔记]-C#判断文件类型
  2. laravel 创建word时下载
  3. Jenkins无法连接Mac节点问题解决
  4. [架构之路-143]-《软考-系统分析师》- 线索与脉络解读
  5. xp查看计算机所有密码是什么原因,如何查看WinXP系统里保存的WIFI密码
  6. python测试之道进阶_自动化测试进阶路线
  7. 下载高通 SDM845 Android 11.0 开源代码
  8. 淮阴工学院计算机期末占60,淮阴工学院二学期计算机数据库期末文档.doc
  9. 淮阴工学院计算机硕士生导师,淮阴工学院硕士研究生导师简介表
  10. Java面试题大全(持续更新中)