V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
glume
V2EX  ›  奇思妙想

程序是否可以保存在数据中在网络上四处流动无处不在?

  •  
  •   glume · 2012-05-11 09:48:38 +08:00 · 4918 次点击
    这是一个创建于 4340 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我觉得这有点像病毒,又不是病毒。
    网络是四通八达的,上面总有各种数据在传递,而网络协议比操作系统来说统一多了,这样是否就提供了一个物理条件让某个程序运行和保存在这些数据中,而不是内存或硬盘上。
    那是否可能有这么一种程序,一旦程序员编好运行后,她就在网上游荡,除非整个网络断电,否则她不可消灭,听起来有点像“天网”,感觉很酷。
    30 条回复    1970-01-01 08:00:00 +08:00
    ipoh
        1
    ipoh  
       2012-05-11 09:55:39 +08:00   ❤️ 1
    楼主肯定不是学计算机的
    传递数据前这些数据肯定要在内存里面。
    binux
        2
    binux  
       2012-05-11 10:03:29 +08:00   ❤️ 1
    程序本来就是数据,只是需要“谁”来执行罢了。
    eerie
        3
    eerie  
       2012-05-11 10:04:25 +08:00   ❤️ 1
    听说过不在硬盘上存储的worm
    不过就算不存在PC内存上,在网卡或者路由器之间传输也需要存在自己的缓冲“内存”上
    walkingway
        4
    walkingway  
       2012-05-11 10:16:31 +08:00   ❤️ 1
    在网络上传输的那是高低电平的电信号,无意义的。
    aligo
        5
    aligo  
       2012-05-11 10:18:46 +08:00   ❤️ 1
    程序是等离子态的!
    hu437
        6
    hu437  
       2012-05-11 17:42:04 +08:00   ❤️ 1
    楼主的想法很好,估计是科幻电影看多了

    但就像前面的同学说的一样,网络只是一个传输通道,程序的运行需要依赖两个东西,一个是存储一个是运行计算

    存储很简单就是硬盘或者内存

    运行计算就是CPU

    在网络上传输的只是信息,这些信息不经常CPU的运行计算,没有存储完全就是没有意义的电信号
    glume
        7
    glume  
    OP
       2012-05-11 23:59:29 +08:00
    @ipoh
    @binux
    @eerie
    @walkingway
    @aligo
    @hu437

    我没表述清楚,既然是网络那么不可能没有计算机只是网线,所以我说像病毒,或者叫“云”。
    shiny
        8
    shiny  
       2012-05-12 00:13:15 +08:00   ❤️ 1
    云的概念被炒作过度了,凡是虚得自己也不知道是什么东西就扯上云的这张皮。

    就像自来水管,只有有输送方和请求方才能实现流动,否则那就是漏水,就需要补上漏洞。

    除非这个数据是大家需要的,P2P勉强算一种吧。
    Semidio
        9
    Semidio  
       2012-05-12 00:27:03 +08:00   ❤️ 1
    当然不可能,网线和光缆又没有数据存储能力,就像电线一样,无论是存储还是使用都得依靠终端设备。
    数据又不是物质,没有载体怎么可能单独存在?
    kojp
        10
    kojp  
       2012-05-12 00:40:51 +08:00   ❤️ 1
    想法不错! 目前来说不太可能,可谁也不敢说若干年一定不能实现 !
    jiyinyiyong
        11
    jiyinyiyong  
       2012-05-12 00:54:52 +08:00   ❤️ 1
    同 6 楼. 运行程序到底还是要到 CPU 指令, 网络没说能直接计算的.
    再说现在有网上一段没有来头的代码就能请求到具体设备和资源进行计算和增殖吗?
    quake0day
        12
    quake0day  
       2012-05-12 01:23:56 +08:00   ❤️ 1
    写一个能够不断自我进化找到新漏洞的蠕虫病毒
    glume
        13
    glume  
    OP
       2012-05-12 01:45:35 +08:00
    @shiny 我只是觉得更像云一些,如果程序有自我复制的条件,那就不算漏水了吧。
    @Semidio 网络当然不可能没有计算机,我理解为这种存在是动态的,而非静态的留在某个物理载体内。传输介质中只要有东西在传输那可以看作是一种“留存”。
    @kojp 是啊,不知道需要什么样的条件。
    @jiyinyiyong 如何请求硬件就是具体的实现方法问题了,如果可能的话。
    @quake0day 恩,我当时想到的就是蠕虫,有条件的分裂以及组合,无数分身,散播着各个媒介中……
    Semidio
        14
    Semidio  
       2012-05-12 01:53:17 +08:00   ❤️ 1
    你是指分布式计算?
    Hyperion
        15
    Hyperion  
       2012-05-12 02:09:11 +08:00   ❤️ 1
    大概理解了... 就像柯南剧场版里的诺亚方舟?

    其实也不是不可能, 只需要一个能被利用的, 一个能够永远不会被发现的, 永远会被继承下去的软件或协议漏洞就可以做到...

    其实autorun病毒在某种意义上做到了, 利用了人的漏洞... 比如我学校的所有机房的计算机, 基本都带毒. u盘一抽插, 一不注意就传到各家了. 自我复制, 传播...
    vanemu
        16
    vanemu  
       2012-05-12 02:25:40 +08:00   ❤️ 1
    宿主的存在是必不可少的吧。
    eric_q
        17
    eric_q  
       2012-05-12 02:35:45 +08:00   ❤️ 1
    可以参考 马伯庸《她死在QQ上》,和楼主的猜想有所重叠。
    willwen
        18
    willwen  
       2012-05-12 06:43:16 +08:00   ❤️ 1
    数据不可能存在流动状态,不过分布式计算倒是有可能,不过需要一个Master Server来管理数据碎片的集合和拆散。
    Hyperion
        19
    Hyperion  
       2012-05-12 10:18:18 +08:00   ❤️ 1
    @willwen 从一点到另一点的迁移为什么不可以被视为流动呢? =3=
    willwen
        20
    willwen  
       2012-05-12 12:45:54 +08:00   ❤️ 1
    @Hyperion 如果用TCP传输数据,除非用非正常手段截取数据,不然就只能是等数据到达接收端的时候才会恢复对数据的“操作权”,还有一种“流动”方式就是到达接收端以后就又发给其他接收端,这样保持数据的“操作权”,让数据处在一直被传递的状态中,不然数据就只能逗留在内存和物理存储容器中,个人认为没有分布式计算靠谱。。
    tuoxie007
        21
    tuoxie007  
       2012-05-12 14:03:58 +08:00   ❤️ 1
    樓主的想法還停留在遐想階段吧,按照目前的計算機架構好像還不行
    比如程序本身是數據,數據的必鬚存在於存儲介質中,不可能在網絡上游荡,當然我不知道LZ所謂的網絡是包括那些設備的,還有游荡是什麽意思
    網絡上走的數據是由其他程序發出和接收的,你這個程序作爲數據是不能自己走的,必然需要有個運行着的程序發送你才行
    程序在網絡上游荡的意義是什麽?網絡設備是不會給你運行環境的,它只會把你當數據發來發去。如果你想跑到别人的電腦上運行,必鬚有接收你的程序
    reus
        22
    reus  
       2012-05-12 14:06:25 +08:00   ❤️ 1
    数据不可能不保存在硬盘或者内存上,网线是没有存储能力的
    网络协议是统一的,但是实现不是统一的,每个操作系统都有细微的差异(所以也就能以这些特征去探测某个机器的操作系统类型),不过这跟物理存储有何关联呢?
    蠕虫病毒就是这样的程序,但是防火墙和杀毒软件会中止它的传播
    有类似传播能力的是dns协议,不过它传播的一般不是可执行程序
    dianyong
        23
    dianyong  
       2012-05-12 14:07:54 +08:00   ❤️ 1
    听起来就是蠕虫 蠕虫是病毒 病毒需要宿主
    HowardMei
        24
    HowardMei  
       2012-05-12 15:23:21 +08:00   ❤️ 2
    网络本身就包括状态存储功能呀,真正纯传输的那只有光纤和电缆了,估计楼主不是讲这个吧。

    普通程序肯定不行,但若有个不依赖现有库与协议直接进行底层操作的人工智能,那么现有网络基础设施只会被她玩弄于鼓掌之中。要到多底层呢?我看最起码要到寄存器级别,也就是RTL级别。熟悉硬件的都知道,数字通讯模块都建立在寄存器之上,整个网络就是一巨型规模的状态机;模拟射频模块就是受寄存器操纵的振荡器+放大器;电网系统现在也日益程控化,大功率晶闸管也是被寄存器直接操纵。所以,只要你找出NxN卡诺图化简方法,那么全球电厂电子电器电话光纤网络所有寄存器就成了你逻辑运算电路的一部分,只是这盘棋很大,不是那么好下的。

    直接在现有Internet中放出这种程序(假如真有人能写出来的话),影响会是核弹级别的,一旦部署,现有网络基础架构会直接解体,被此妖孽取代,她(们)摇身一变成为全球网络操作系统^_^

    缩小版的网络上早就有这样的例子了,那就是大家智能手机里普遍使用的 SOC 芯片,这种集合了电源模块、模拟射频模块和数字逻辑模块的芯片,本身就是一个很大的类似Intranet的网络,内部通讯协议和Internet所用不同,但差不到哪儿去,也同样要考虑传输过程中的各种问题以及复杂的调度。

    当然人家只是往SOC里灌Mobile OS,你要往里面灌超级牛逼的自我进化蠕虫,也没啥不可以的。

    很多技术都早有了,十年前就看到美国有若干研究 封闭环境下自学习机器人群组网行为 的项目,当时据说智商比蚁群稍微高点,现在指不定啥样了,所以某天这些在几块破芯片上自我学习的程序进化到精通硬件操纵,自己跑上Internet,导致人类被天网控制,我是一点儿也不会觉得奇怪的。
    glume
        25
    glume  
    OP
       2012-05-13 00:57:17 +08:00
    @Semidio 应该说部分类似分布式运算,但如果运算完成就程序结束了吧。
    @Hyperion 我觉得虽然当前漏洞造成了类似的现象,但应该提供公共的一个接口供类似的程序运行。
    @vanemu 宿主不是存在的必须条件,如果没有宿主程序本身就应该是个“宿主”。
    @eric_q 我回头翻翻看,多谢。
    @willwen 若用master server那也算是一种方法,发现p2p的程序也用类似或更多的办法,但他们传递的是主要是数据,当然请求电脑硬件做什么就天知道了。
    @tuoxie007 我说的游荡就是在某些环境下,数据可以进行操作,比如拦截过滤等。当然,任务可以保留至请求到硬件的时候,这个过程也算是一种保存吧。
    @reus 我的意思是如果数据不停的在网络上传输,那么可以看成是一种保存,当然要做到这个需要条件,比如两个人在打羽毛球,那么球不落地,则可以看成羽毛球保存在赛场上或任何一个选手都可以使用此球,虽然球并没有装在某个选手的口袋里。
    @dianyong 或许应该有个协议式的普遍的宿主,那么蠕虫就威武了。
    @HowardMei 感谢如此丰富的回复。我豁然啊开朗。没发现居然有这么多回复,我才进一步发现其实这种设想开头就已经假定了该程序具有自我意识,或者说在某种条件下具有部分的类似自我意识的表现。

    程序和数据在目的上是有区别的,如果程序在游荡那么她和数据的区别就是她需要执行某个任务达到某个目的,这个目的不应该是计算机发出的,而应该是程序本身发出的;或许这个只是类似自我意识,不过作为程序来讲楼上的GG提到人工智能,姑且不管这个智能到底要做什么,但我想首先第一目的就是要生存,“游荡”就下意识的暗示了这个状态,这段程序不能像数据发出接收就完事。我完全认同楼上说要到达这样的目的需要硬件层的支持。不过貌似人工智能都是在重点算法,我觉得但凡用逻辑和数学只能产生智能不能产生生命。
    guoquan
        26
    guoquan  
       2012-05-13 01:09:02 +08:00   ❤️ 1
    这不就是云么。。。在云上运算好把结果给你回来。。。好了洗洗睡吧
    binux
        27
    binux  
       2012-05-13 01:14:19 +08:00   ❤️ 1
    @glume 生命在于运动,无论这个程序出于什么目的,它首先需要动起来,只有无处不在的数据是不够的,重要的是怎么让它自己动起来。
    而且就如真正的病毒/细菌一样,它要存活/传播也有物种限定,作为一个寄宿生命,它必须能够调动寄主的某种技能,让自己活动起来,不然“目的”完全就是连想都没法想。

    同理,程序作为没有实体,无法独立存活的数据,是无法脱离寄主而产生活动的。如果无法活动它怎么思考呢?所以,让自己动起来是它自己思考如何传播的前提条件。
    ck65
        28
    ck65  
       2012-05-13 01:20:59 +08:00   ❤️ 1
    打破冯诺依曼体系 -> 生物计算机 -> 像粒子一样飘浮并可以互相通讯的计算机 -> 实现卤煮的想法
    reus
        29
    reus  
       2012-05-13 02:05:23 +08:00   ❤️ 1
    @glume 这根本不能用打羽毛球来比喻,因为电磁信号的传播很快,两个直接连接的接口之间传播时间可以看作是零,所以也就没有像羽毛球那样的“保存在赛场上”的状态。不论有线信道或是无线信道,都是没有存储能力的,只有通讯的两端才有保存数据的能力。所以所有数据都是在广义的内存之间传播的(或者硬盘,其实都是存储设备,可以统一来看)。数据只能从一个节点跳到另一个节点,没有不属于任一个节点的状态。而且一个节点如何处理这个数据,是由节点自己控制的,而跟数据无关(其实就是路由)。在当前的体系结构下,这种程序是不存在的

    楼上说的生物计算机就极有可能出现不可消灭的程序,但这种程序必然会被称作病毒。生物本身就有计算能力,可以当作计算机用,病毒的本来意义就是生物病毒。病毒会被设法控制的,如果不能控制,那就是人类的灾难了
    SR1
        30
    SR1  
       2012-05-13 02:23:52 +08:00   ❤️ 1
    我觉得就像PHP里的eval函数一样,把数据当作指令来执行,也就是说,如果电脑能将数据作为指令处理,那么在这个层面上数据就具有了“生命”,电脑“受控”于数据,如果数据将自身不断发往别的电脑,不就实现了自我繁殖,数据传输中的出错也类似于突变…
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2609 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:35 · PVG 23:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.