为什么俄罗斯不怕芯片卡脖子?

量子位 | 公众号 QbitAI

怎么一个国家被卡脖子了,画风竟然是这样?

2f3e5221c63f5e7840654ffa3e0a7395.png

时间回到十几天前,美国一声令下,英特尔、AMD、 台积电,三星…几乎当下所有主流厂商都挨个制裁了个遍。

俄罗斯的半导体产业,再度引发人们关注:制裁后会有多大影响?

结果网友的画风却是“没脖子”、“卡了个寂寞”这样式儿的。

98445d536eef904c11315c2d9bf26cbf.png

那俄罗斯的脖子哪去了?

现在提到俄罗斯的信息技术,你想到的可能是举世闻名的黑客和盗版网站。

但要说到半导体和计算机,大脑是不是就有点一片空白了……

b805b021d9faea6b6847b9b3bd4e5467.png

一个数学强国,又继承了前苏联的工业资源。按理说,在计算机硬件上应该不至于太差。

但为什么它现在,在世界上好像一点存在感都没有?

这也不能赖现在的俄罗斯。

要赖,还是得赖以前给他们打地基的苏联。

多次点错科技树的苏联

苏联的计算机起步并不晚。

早在1936年电子计算机时代来临之前,他们就用水流做了当时唯一能解偏微分方程的机器。

这台“水流积分器” ,靠精确到毫米的水位储存数字、不同流速控制运算,与当时用齿轮和杠杆传动的主流方案完全不同。

4d3404ab78abe880ad55809bdfe4a8e9.png

(嗯,或许这就是苏联点歪科技树的开始)

二战之后,美苏都开始发展起电子管计算机。

1946年,美国的第一台通用计算机ENIAC诞生。

1950,苏联第一台计算机МESM (МЭСМ)投入使用。

从这之后,苏联没有继续追赶美国的脚步,而是逐渐走上不同的技术路线。

电子管or晶体管

早期的电子管计算机有几个问题:体积大、运行不稳定、极其耗电。

美国的ENIAC重达30吨,占地170平米,每分钟能执行5000次运算。

有传言说,ENIAC每次开机周围民居里的电灯都要暗上不少。

而且ENIAC每天都要烧坏几个电子管,需要维护人员从18000个电子管中定位到故障点,有一半的时间都在修理。

c0364f75407467c78dc0c67825200205.png

而苏联的MESM只用了6000个电子管做到每分钟约3000次运算,虽然算力稍弱一些,但耐用和省电上有一些优势。

提高算力、缩小体积、提高稳定性和节省电力是当时两国共同的目标。

50年代末60年代初,虽然两国又先后研制出体积更小、耗电更少的晶体管计算机

但苏联却选择继续钟情于电子管,把主要精力放在了电子管的小型化上。

究其原因,一个说法是苏联官方认为电子管的抗干扰能力强,用在军工产品上更成熟可靠。

而美国科技公司在市场机制下选择了体积更小、耗电更少,适合民用的晶体管路线。

1e1fb943ba44cea3d329a07b2b115ed8.png

美国后来在晶体管的基础上继续发展出集成电路,并提出摩尔定律。

晶体管的体积不断缩小,电路规模不断增加,直到今天。

而苏联的电子管小型化却走到了末路。

电子管需要一定的真空空间,终于有一天苏联专家发现,想要再缩小下去付出的成本将是天文数字。

等到苏联再次重视起晶体管,与美国集成电路相比已经落后了大概20年。

计算机设备orPC

集成电路的下一步发展,是大规模的集成电路,也就是我们当下使用的手机、电脑方面的芯片。

但多次点错科技树的苏联,想要重振旗鼓,并不是那么容易。

因为当时还有严重的“内忧”:

苏联最初的计算机系统,哪怕是在一个系列的范围内,都没有统一的通用标准,导致诸多外围设备、数字存储并不兼容。

于是就在1969年,政府做了个冒险的决定:

终止本土计算机的发展,并开始在IBM/360平台的基础上制造计算机。

换言之,直接Copy西方的系统。

在当时一部人看来,这直接导致了计算机工业的落后。

当苏联推出第一台ES EVM大型机(基于IBM/360)时,美国已经过渡到下一代IBM/370平台。

到1980年代,个人计算机开始在美国大规模普及,英特尔、微软、微软等科技企业开始推出微处理器计算机。

这时候的苏联,却保持高度怀疑态度:计算机永远不可能是个人计算机

时间来到1985年,戈尔巴乔夫上台后改革,放开在学校中可以使用个人计算机

其中,BK-0010由此成为苏联唯一一台生产数量超几千台的个人计算机,但可靠性特别差。

16f3596906142f3df1debe88bd7cac20.png

出口和山寨这两条路,也就被政府大力推扬。

不过值得一提的是,由于硬件生产的“硬伤”,苏联山寨、组装出来的设备,始终达不到质量标准。

比如,Agat,就是基于Apple II的克隆版,就多次遭到计算机质量和可靠性的投诉,最终因供应组件的问题而停产。

1c9f8757a79902b804a593e643cbd76a.png

二进制or三进制

除了在计算机发展几次关键跨越上没有跟上,苏联还在其他道路上走了弯路。

最典型的就是,曾短暂尝试过的三进制计算机。

1958年,莫斯科国立大学研制出第一台三进制计算机Setun (Сетунь)。

e4c21970ad052602a05cde498aea74f4.png

这里的三进制倒不是0、1、2,而是-1、0、1,也叫做平衡三进制。

这样在电路上就可以用负电压,零电压,正电压来实现。

三进制在表示负数上有天然的优势,可以节省计算指令。

Setun的主要元件铁氧体磁芯只使用了约2千个,结构简单带来运行稳定,在第一年运行中只损坏了3个元件,而莫斯科国立大学那台机器连续运行了17年。

批量生产后,Setun被用于从天气预报到组织管理优化等多种领域,还首次诞生了计算机辅助教学的自动化系统。

Setun也收到了大量来自外国的订单,似乎有望建立起一套三进制通用计算技术标准。

但不知出于什么原因,苏联有关部门限制了Setun的产量,总共只生产了50台,并在1965年正式停产。

主导Setun项目的Brusentsov后来在2011年国际信息处理联合会(IFIP)发表的一篇文章中暗示到:

莫名其妙的行政干涉可能是因为Setun太便宜了,当时只卖27500卢布。

至于便宜为什么不是好事,只能说懂得都懂。

时间来到1970年,同样是莫斯科国立大学再次尝试,研究出更先进的Setun 70,其中的设计原则与后来的RISC架构异曲同工。

不幸的是,Setun 70也没有获得行政力量的支持,只在各大学内部用于辅助教学。

在机房用小型终端上多媒体课这种操作,苏联70年代就搞出来了。

db35e9ccb75f27a41d09414294558baa.png

这种Nastavnik教学系统后来被迁移到其他计算机平台上总共使用了超过30年,成为三进制计算机留下的少数遗产。

后来有很多人为三进制计算机的消失感到惋惜,比如图灵奖得主高纳德就称赞平衡三进制“也许是最优雅的”。

从信息编码角度讲,e进制的存储效率最高,但不是整数难以实现。

3比2更接近e(约等于2.718),理论上来说更具优势。

虽然实际上适合三进制的材料更难找、电路设计上也更复杂,这些理论优势还能剩多少也没有定论。

到今天,基于二进制的IT产业已发展成熟,除了有零星的学术尝试,很难再有人重新拾起这个失落的路线了。

没联成的互联网

电子管、三进制的选择,个人计算机的低估……多次点错科技树的苏联,不免让人好奇,这当中是否也有过没点歪的。

还真有。

全境自动化系统OGAS,于1962年首次提出。

它是一种基于已有和即将新建的电话网络线,能自动收集处理信息,意在建立实时和远程的国家计算机网络,来管理国民经济组织之间的资源和信息分配。

提出者正是当时领导开发个人计算机Mir系列的Victor Glushkov

b0933a8122f1aaafebbe721a5ee13a4e.png

具体来说,这个自动化系统共分为三层网络。

  • 在莫斯科设立计算机中心。

  • 其他主要城市设立200个中级中心

  • 在经济重要地区上达20000个本地终端。

这一网络允许任何终端之间进行实时通信。换言之,人们可以通过互联网高效获取各地信息。

比如电话订火车票了解一下~

进一步的,Victor Glushkov还设想到了可支持线上货币流通的电子经济体系。

放在当下,也就是随处可见的子支

3b9aa6ce59eaf347831e8ce9bb27cdfe.png

不过因为这个系统过于超前,在1970年代初期遭到诸多领导官员反对。由于没有申请到足够的资金,OGAS也就被无限期搁置。

这些点歪的和没实现的科技,最终都跟着苏联解体烟消云散。

留下了什么

苏联解体前夕,计算机制造生产就已经停滞,大批订单被取消,还有工厂被迫改行生产吊灯求生。

最终,随着苏联解体,大量技术人才出走欧美。

这些人中,有后来的英特尔首席处理器设计师、主导了奔腾III架构的Vladimir Pentkovski,也有支持向量机之父Vladimir Naumovich Vapnik。

到现在,俄罗斯还有强大的数学和计算机基础教育,ACM/ICPC竞赛上连续多年霸榜。

f0ad1a6d8904c48b3dfd34b29f37a39c.png

但俄罗斯没有足够的IT产业来吸收这些人才,这可能也是黑客盛行的原因之一。

很多人才到外国工作、到外国大学任教,都是香饽饽。

近年来我国也引进了不少俄罗斯顶尖人才。

比如清华大学丘成桐数学中心去年底迎来数学物理学家Nicolai Reshetikhin加盟,华为也招揽了22岁俄罗斯天才少女。

至于那些点歪了的黑科技,也没有完全消失。

比如最先进的雷达上,就沿袭了苏联擅长搞模拟电路的传统,用一种“他激晶体振荡器”代替芯片功能。

那些苏联产电子管皮实耐用,至今仍有许多能工作的,也成了无线电爱好者和音响发烧友手中的珍稀收藏品。

时不时还能在网友分享的老设备拆解中,欣赏一下仿佛来自平行世界的工业之美~

0a74faff218d51e4c53e6eed67e36bb2.png

如今回过头来看,那些被点错的科技树,制约了俄罗斯计算机工业的发展,甚至连个有代表性的科技企业也说不上来。

让人唏嘘的同时,也给我们带来了深刻的教训。

科技的发展要尊重客观规律,不能盲目排外,同时也要掌握自己的核心技术。

另外,没有完整的工业体系,即便理论基础再强大,科技也不过是空中楼阁。

参考链接:
[1]https://www.amusingplanet.com/2019/12/vladimir-lukyanovs-water-computer.html
[2]https://en.wikipedia.org/wiki/History_of_computing_in_the_Soviet_Union
[3]https://aeon.co/essays/how-the-soviets-invented-the-internet-and-why-it-didnt-work
[4]http://ternary.3neko.ru/setun.html
[5]https://link.springer.com/chapter/10.1007/978-3-642-22816-2_10

强势开源一款小程序!
2021-11-07
强力推荐一个完善的物流(WMS)管理项目(附代码)
2021-10-23
推荐一个 Spring Boot + MyBatis + Vue 音乐网站
2021-10-19
分享一套家庭理财系统(附源码)
2021-09-20
推荐一个互联网企业级别的开源支付系统
2021-09-04
推荐一套开源通用后台管理系统(附源码)
2021-08-21
一款神仙接私活儿软件,吊到不行!
2021-07-31
基于 SpringBoot 的仿豆瓣平台【源码分享】
2021-07-18
干掉 Wordpress!这个开源建站神器有点吊!
2021-06-18
从朋友那里搞了 20 个实战项目,速领!
2021-06-12

0aef5862bef7e142263f8b8205a02e72.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一个简单的俄罗斯方块的 Python 代码示例: ``` python import pygame import random # 初始化Pygame pygame.init() # 创建游戏窗口 screen_width = 640 screen_height = 480 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("俄罗斯方块") # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) YELLOW = (255, 255, 0) # 定义方块大小和格子数 block_size = 20 grid_width = screen_width // block_size grid_height = screen_height // block_size # 定义方块形状 shapes = [ [[1, 1], [1, 1]], [[0, 2, 0], [2, 2, 2]], [[0, 3, 3], [3, 3, 0]], [[4, 4, 0], [0, 4, 4]], [[5, 5, 5, 5]], [[6, 6, 6], [0, 6, 0], [0, 6, 0]], [[0, 7, 0], [7, 7, 7], [0, 7, 0]] ] # 定义方块颜色 colors = [ BLACK, RED, GREEN, BLUE, YELLOW ] # 定义游戏变量 score = 0 grid = [[0] * grid_width for _ in range(grid_height)] cur_shape = random.choice(shapes) cur_color = random.choice(colors) cur_x = grid_width // 2 - len(cur_shape[0]) // 2 cur_y = 0 # 定义游戏函数 def draw_block(x, y, color): pygame.draw.rect(screen, color, (x * block_size, y * block_size, block_size, block_size)) def draw_shape(shape, x, y, color): for i in range(len(shape)): for j in range(len(shape[i])): if shape[i][j] != 0: draw_block(x + j, y + i, color) def check_collision(shape, x, y): for i in range(len(shape)): for j in range(len(shape[i])): if shape[i][j] != 0 and (y + i >= grid_height or x + j < 0 or x + j >= grid_width or grid[y + i][x + j] != 0): return True return False def place_shape(shape, x, y, color): for i in range(len(shape)): for j in range(len(shape[i])): if shape[i][j] != 0: grid[y + i][x + j] = color def remove_lines(): global score lines_removed = 0 for i in range(grid_height): if all(grid[i]): grid.pop(i) grid.insert(0, [0] * grid_width) lines_removed += 1 score += lines_removed ** 2 # 游戏循环 clock = pygame.time.Clock() while True: # 处理游戏事件 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: cur_x -= 1 if check_collision(cur_shape, cur_x, cur_y): cur_x += 1 elif event.key == pygame.K_RIGHT: cur_x += 1 if check_collision(cur_shape, cur_x, cur_y): cur_x -= 1 elif event.key == pygame.K_UP: old_shape = cur_shape cur_shape = [[cur_shape[j][i] for j in range(len(cur_shape))] for i in range(len(cur_shape[0]) - 1, -1, -1)] if check_collision(cur_shape, cur_x, cur_y): cur_shape = old_shape elif event.key == pygame.K_DOWN: cur_y += 1 if check_collision(cur_shape, cur_x, cur_y): cur_y -= 1 # 更新游戏状态 cur_y += 1 if check_collision(cur_shape, cur_x, cur_y): cur_y -= 1 place_shape(cur_shape, cur_x, cur_y, cur_color) remove_lines() cur_shape = random.choice(shapes) cur_color = random.choice(colors) cur_x = grid_width // 2 - len(cur_shape[0]) // 2 cur_y = 0 if check_collision(cur_shape, cur_x, cur_y): pygame.quit() exit() # 绘制游戏界面 screen.fill(WHITE) for i in range(grid_height): for j in range(grid_width): if grid[i][j] != 0: draw_block(j, i, colors[grid[i][j]]) draw_shape(cur_shape, cur_x, cur_y, cur_color) pygame.display.set_caption("俄罗斯方块 - 得分: {}".format(score)) pygame.display.flip() # 控制游戏速度 clock.tick(10) ``` 这是一个非常简单的俄罗斯方块示例,只有基本的游戏逻辑和图形界面。你可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值