-
【?】有這種程式嗎
小第我不是學電腦的 所以不會寫程式 但是目前我有個疑問 這個疑問 起因於 目前很多程式都過分
龐大 雖然說pc的容量也越來越大了 cpu也越來越快 但是 對於舊的pc仍是負擔 例如ms的東西就是一
項例子
於是我想到我讀的生物的東西 我們知道DNA 是生物的編碼訊息 其基本是由ATCG構成 然後由DNA轉
成RNA再來生成蛋白 這就像PC的程式 經過編譯處理後出現結果 但是 生物體中以人來說 充滿了過多的垃圾DNA(單的說就是沒有具備基因功能的dna(但是他又很重要沒有的話有些關鍵的動作沒辦法啟動))然後呢 低等的生物 如病毒 細菌 有個奇怪的 dna功能 他們的dna 可以有多種不同的 read frame
由於具備這種功能 造成了 他們的DNA使用比我們更有效率
以人來說吧 如果DNA是ATTTTGGGCCCTTTGGAAATTTCCGGG 這樣好了 他只能做出這樣的蛋白 然後再去做後
續處理
但是以細菌來說 同樣的ATTTTGGGCCCTTTGGAAATTTCCGGG 這樣好了 由於讀取的不同 造成他可以說幾
乎同時 可以做出多種的蛋白 因為 他在讀取ATTTTGGGCCCTTTGGAAATTTCCGGG 時 先做出了
ATTTTGGGCCCTTTGGAAATTTCCGGG 的蛋白 但是當那串的DNA 他讀到第2個T時 他便開始作
TTTTGGGCCCTTTGGAAATTTCCGGG這串蛋白 然後到了第3個T時 他做了 TTTGGGCCCTTTGGAAATTTCCGGG
這個蛋白 請注意 每次都只差一個鹼基 但是出來的蛋白就不同了 (ps以上只是舉例 實際並非是每
次都差一個鹼基 還有其他因素限制)
同樣的情況 轉到pc的程式好了 我們看一下 ms的win2k 甚至winxp等系統中還是有ie4的程式碼 跟註
冊叢集 就有如人類的垃圾DNA 但是 我們可以把程式精簡一下嗎 例如一串0011010110好了
當它變成011010110那實際代表的東西也不同了 那11010110也是不同
所以我們可以做出類似的東西嗎 也就是 我們先將英文字根符號轉換成鹼基對(就是DNA的ATCG啦)
然後想出來的東西經過 組譯器 轉成01的編碼 其中組譯器 負責將英文及符號編成鹼基跟01碼
那是不是會造成程式的縮小的
我舉個例子好了 例如 我們將英文的ATCG 直接跟鹼基的ATCG對應 然後將鹼基對應成01碼 也就是
A鹼基對應01 C鹼基對應00 T鹼基對應11 G鹼基對應10 那 當我們輸入 英文字 CAT時
假設原來目前的01編碼 是出現 00 01 11 好了 那他是不是要佔去6個bits 那變成類生物編碼
可以縮小成0011 變成4個bit 但是經過解譯都是同樣的結果
有東西嗎
thx
-
老實說...我不是讀生物的(讀國中)
聽不懂你在說什麼...
首先~我告訴你幾個基本觀念
計算機(電腦)裡的最小單位是bit
而bit就可以說是1個開關
它只能有開和關這兩種選擇
我問你.....一個開關~它的開~和關的可能有多少種?
答案是....兩種
就是0和1
那麼2個bit也就是兩個開關呢?
就是4種
00
01
10
11
那8個開關的可能組合呢?
00000000
00000001
00000011
......
....
總共可以有256種組合
好...那我們讓
00000000代表0
00000001代表1
00000011代表2
.....
...
以此類推~
電腦中的數字是用開關的組合拼出來的
也就是說~越多的開關組合越多種~
能代表的數列也越多....
8個bit為一個byte
也就是位元組
而記意體有限~所以總不能為了代表一個數用全部的記意體(全部的開關)吧?
所以~我們對每個變數都會考慮它所會用到的範圍
像一個ASCII字元通常都用1個byte
也就是有0~255的數可以代表不同的符號或字
那中文字因為組合很多~所以要用到兩個...
那兩個byte (位元組)也就是16個byte
16個byte的祖合有多少組呢?
2的16次方
也就是65536
所以一個中文字所用到的大小是2個byte
那麼....如果你說~
我有一個變數~要放一個天文數字怎麼辦
那...你就必需用更多的開關來代表更大的數
通常都是.....
用長整數就夠了
一個長整數的範圍多大呢?
2的32次方~也就是4294967296
或是用位元組來算
256的4次方....
以上是基本原理
而電腦放數字的變數類形通常就那幾種
byte(位元組) = 8bit = 256
int (整數) = 16bit = 65536
long (長整數)= 32bit = 4294967296
這是最常用的
其它還有小數點用的~我比較不熟~在此不介紹....
這是我自己想出來的觀念
應該沒錯~
如果有錯請提出來...謝謝
-
對了~說到生物
我一直對未來有種想像....
就是未來程式設計師不算什麼
出現了"基因設計師"
用"基因程式碼"寫出生物來
然後再"基因編譯器"做出來
我生物考得不怎麼好~也沒有更深入的了解
或許這是天馬行空~就當是一個白日夢好了
:D:D:D
-
一般: 【?】有這種程式嗎
喔....
抱歉~連回了三次= =
我剛剛才大概看懂你的意思
電腦裡面是很多很多很多無數微小開關組成的
而開關只能代表開和關兩種
並不能像你那個A什麼東西的
可以有四種狀態.....
但是....
如果你能發明一種電學的東西~有10種狀態的話....
那麼...1個的組合就有10種
2個的組合就有
100種
3個的祖合有
1000
4個的組合就有
10000種
相對於只有兩種狀態的開關
4個才
16....差那麼多.
當你發明了這個東西
比爾蓋子的錢都要輸你了
-
不是很了你的意思,你應該是想說明資料壓縮的東東吧.
利用不同的解讀的方法,去解同一段程式碼的,
或逆向操作,利用編碼將程式壓縮.
感覺起來利用編碼將程式壓縮是乎可行,但是在執行程式時將會增加系統的負擔.
會多一道解碼的手續,因為CPU底層的指令集就那百多個[例如 AND OR],是硬體設計時就決定好的.
若只是想單純的減少程式的大小,的確可以用編碼將垃圾資料丟掉,也就是常用的winzip.
不過一般人應不會對程式碼壓縮,理由就是會對系統效率產生負擔.
若是想增加執行的效率,較快速的演算法會是提升效率最好的方法.
我不知道你是不是問這個,我也還是個混混了學生.
希望有真正的專家來解除疑惑.
-
重點是"垃圾碼"嗎?
我的看法是
一個小程式也許還能這樣做,
但稍大一點的應用程式就比較困難了,
因為是由一群程式設計師共同編寫,
而且程式只對應當時的電腦環境,
當軟體升級時只把功能往上加上去,
而不是另外重新思考編寫一套程式碼,
如果都不修改,久而久之會愈來愈大,
這種情況好像常出現在微軟的程式上
所以不時有些小公司或是個人開發出
功能更多但容量卻小的軟體!
還是你想講"生物電腦"?
這可就跳脫傳統的01思考模式
到時電子業就應該沒落了...
-
嗯 看來我沒有說清楚 嗯我的說法是說 編寫程式 可以像打一篇文章一般 但是 由一個特殊的編譯的程式 (程式寫好不事都要編譯程式嗎) 將他轉成01碼的時候 可以造成較為精簡的編碼
然後程式執行時由cpu的設計或由os等其他東西的支援(最好是cpu啦) 可以將一段01碼 多次讀取但是讀取的位置不同 這就造成了出來的結果不同 另外由於cpu的配合 可以出現每個cpu的管線 分別處理不同讀取的01碼 然後最後交給最終匯整的元件做出輸出的動作
嗯希望大家看的董我的意思
thx
to VicLin :
並不是A有4種狀態 是說舉例 英文字母ATCG這4個分別跟鹼基的ATCG一對一對應 然後我假設設定的是
這4個鹼基每個都是由2個bit的01碼來表示 當然可以用更多碼來表示 但是 我們基因就有ATCG這4個了 這樣就表示有8個bit在用了 如果每一次用其中3種不就是每次都是8位元在處理嗎
原則上市這樣啦 詳細的我還在想啦 不過也是想想 不知道有沒有人作也不知道可不可行
-
你指的編碼方式頂多只能使程式的大小縮小,
而且還需要編碼的動作來恢復,
那不是跟一般的壓縮程式意義一樣了嗎?
現在的電腦並不是那麼在意軟體所佔磁碟的空間,如果可以以空間換取時間(執行速度)是現今發展的方向
即使想要把那編碼的動作放在OS裡面,也徒增系統的作業時間吧?
-
[QUOTE][i]最初由 purk 發表[/i]
[B]嗯 看來我沒有說清楚 嗯我的說法是說 編寫程式 可以像打一篇文章一般 但是 由一個特殊的編譯的程式 (程式寫好不事都要編譯程式嗎) 將他轉成01碼的時候 可以造成較為精簡的編碼[/B][/QUOTE]
嗯....並不是所有程式寫好都要編譯~像VB你可以用直譯的啊~
程式寫到那就做到那~
(以上是在耍白濫~挑語病~不要理我~ :D)
[B]
然後程式執行時由cpu的設計或由os等其他東西的支援(最好是cpu啦) 可以將一段01碼 多次讀取但是讀取的位置不同 這就造成了出來的結果不同 另外由於cpu的配合 可以出現每個cpu的管線 分別處理不同讀取的01碼 然後最後交給最終匯整的元件做出輸出的動作
嗯希望大家看的董我的意思
thx
[/B]
你的意思是說
假設現在程式只有10110010
現在執行A的動作
只需要用到最前面的1跟最後面的0時
利用os或是硬體
就只讀取前面的1跟後面的0
而不是10000000嗎?
如果要利用硬體上的設計的話那同樣的程式在不同的電腦上執行的結果不就不一樣了嗎?
還是看不太懂的說~
-
雖然還是不太懂
但是呢.....
我想~
除非你自己再重頭做一個
程式裡最小可以用的單位只有byte.....
也就是~不管再小的數字~你都要至少用到8個bit
就算只有0這個數字....一樣都是裝在8bit個開關裡
一個英文字 C .....但是就要用到8個bit來裝
雖然或許你認為~這樣很浪廢空間
但它會這樣做是有它的道理
如果視大小而來改變bit的個數
這樣會整個亂掉
不如犧牲那些無關緊要的幾個空間~來換許其它目的
-
purk兄,現在的電腦已無法再跳出舊電腦的陰霾了...
如果你以前是比爾蓋茲的夥伴的話,把你的想法告訴他,
可能現的電腦就又不一樣,cpu的管線是一個低層的東西,
你要做的程式是比cpu的管線高,這就像網路7層一樣,
cpu的管線是為了,提高CPU在執行機器碼的速度,所以不可混合一談
-
[QUOTE][i]最初由 gwochern 發表[/i]
[B]purk兄,現在的電腦已無法再跳出舊電腦的陰霾了...
如果你以前是比爾蓋茲的夥伴的話,把你的想法告訴他,
可能現的電腦就又不一樣,cpu的管線是一個低層的東西,
你要做的程式是比cpu的管線高,這就像網路7層一樣,
cpu的管線是為了,提高CPU在執行機器碼的速度,所以不可混合一談 [/B][/QUOTE]
比爾蓋子是玩軟體起家的吧= =
不是搞硬體起家的
-
大家似乎都把焦點放在程式的大小, 但是事實上問題並不在這裡.
一隻程式的效率除了大小之外, 最重要的莫過於"執行過程".
這個解釋起來, 可能不是三言兩語能夠解釋清楚.
舉個例子來說好了, 假設桌上有一疊文件要排序, 你會怎麼做呢? 1. 看指導手冊? 2.運用"常識"?
無論你用上述哪一個方法, 其實都在"執行"程式. 只不過, 來源不同.
再來呢, 假設手冊告訴你, 你有 N 份文件, 就必需先騰出桌面上 N 個空間以利排序, 然後先把文件全部攤開, 在一個一個從最大到最小的疊起來. 你覺得這樣有效率如何?
再來, 我們的常識告訴我們, 其實不用那麼麻煩, 我只需要 2~3 個空間就可以執行這樣排序的動作, 先把第一份拿到另一疊, 再來看第二份是比前一份大還是小, 小的話就往上疊, 大的話就往下疊... 以此類推. 那麼, 這個方法真的比較有效率嗎?
或許你會說, 第一個方法比第二個方法有效率可能是當文件很多的時候. 若文件不超過 10 件, 那麼我用第二個方法會比第一個方法好很多, 最起碼, 我不需要清桌面 (別忘了, 清理桌面也是"執行"的一部份) 或是找一張更大的桌子來擺這十份文件...
我個人認為目前這些大覺得沒有效率的程式的問題就出在程式設計師, 然而要算出一個演算法真正所需的時間其實並不是那麼簡單. 更遑論發展多種演算法然後觀察他們的效率. 也就是說, 現在的軟體品管因為硬體進步的關係愈來愈不受重視了(只 PC 而言).
我相信若今日 Windows 作業系統仍然動輒 1~2GB 但是效率及穩定性與其它的 OS 有得拼的話, 那誰會在乎那 1~2 GB ?
-
[url]http://forum.pcdvd.com.tw/showthread.php?s=&threadid=190575[/url]
-
>我舉個例子好了 例如 我們將英文的ATCG 直接跟鹼基的ATCG對應 然後將鹼基
>對應成01碼 也就是A鹼基對應01 C鹼基對應00 T鹼基對應11 G鹼基對應10 那
>當我們輸入 英文字 CAT時假設原來目前的01編碼 是出現 00 01 11 好了那
>他是不是要佔去6個bits 那變成類生物編碼可以縮小成0011 變成4個bit 但是
>經過解譯都是同樣的結果
這個例子中假設每個"鹼基"都對應2bit, 所以"生物編碼"的結果0011去解譯時可以回推成 00 01 11... 但是, 如果不是每個"鹼基"都是 2 bit 呢?!
也就是說如果 A鹼基=101 T鹼基=1 C鹼基=10 G=01, 那結果會如何?
而 x86 cpu 指令集就是這種指令長度不固定的情況~
-
[QUOTE][i]最初由 purk 發表[/i]
[B]嗯 看來我沒有說清楚 嗯我的說法是說 編寫程式 可以像打一篇文章一般 但是 由一個特殊的編譯的程式 (程式寫好不事都要編譯程式嗎) 將他轉成01碼的時候 可以造成較為精簡的編碼
然後程式執行時由cpu的設計或由os等其他東西的支援(最好是cpu啦) 可以將一段01碼 多次讀取但是讀取的位置不同 這就造成了出來的結果不同 另外由於cpu的配合 可以出現每個cpu的管線 分別處理不同讀取的01碼 然後最後交給最終匯整的元件做出輸出的動作
嗯希望大家看的董我的意思
thx
[/B][/QUOTE]
我比較了解你的意思了,我覺得你的想法用軟體的方式應該達不到,
不管什麼軟體都需要經過CPU執行,要用不同的方式解讀同一段程式碼,
必須多經過一道解讀程式碼的手續,不如直接將未經過編碼的程式丟到CPU執行,
若使用硬體來做解讀程式碼的工作,我覺得應該可行,但會增加硬體設計的的困難,其實好像也有類似的東西,電腦的平行處理,多CPU系統,採取的方式應該和你的想法差不多,像超級電腦深藍,就擁有百多顆的處理器,但他們的方式應該不是用不同的讀取方式,來讀同一段程式碼,而是將一段程式拆解成不同的部分,丟到不同的處理器做運算,然後再將結果整合起來.
-
近來聲浪不小的"格網"
似乎就是這樣的運算處理方式..
-
某甲 2003/3/1 上午 01:34 某乙 兄 我不懂你說的意思呢 可以解說一下嗎
thx
某乙 2003/3/1 上午 01:35 什麼?
某甲 2003/3/1 上午 01:35 那個 程式的問題
某乙 2003/3/1 上午 01:36 哦.. 就是 x86 cpu 指令集,
每個指令的長度不是固定的呀
某甲 2003/3/1 上午 01:36 為何 如此設計
某乙 2003/3/1 上午 01:37 一部份是為了舊電腦的相容性
某甲 2003/3/1 上午 01:38 嗯 那應該可以用那個 來作 特性轉換
某乙 2003/3/1 上午 01:38 另一部份則是指令特性的關係
某甲 2003/3/1 上午 01:38 我再想啦 我 今天問了 有人說可以
某乙 2003/3/1 上午 01:39 可以是可以, 只不過沒什麼好處吧了
某甲 2003/3/1 上午 01:41 有阿 就像我說的 cat 如果 用心的編碼
只要4個 bit 舊的或許要6個 那 如果
cpu有36到管線 那 我的編碼
至少可以先跑9到以上的程式 但是就的
只能跑6到 不是嗎
某乙 2003/3/1 上午 01:42 沒錯, 但是這種方法有資料相依性的關係,
也就是說如果前沒有解出來,後面就一定不能執行?
吧....
某乙 2003/3/1 上午 01:43 可是現在的cpu超管線已經克服資料相依性的問題?
,
照你的那個做法只能減少大小,可是速度卻會變的?
慢
某甲 2003/3/1 上午 01:43 不一定阿 那個 有點項intel目前ht的功能
但又不全部都是 它可以相依也可以獨立阿
某乙 2003/3/1 上午 01:44 那就是說cpu還要另外去分辦現在讀進入來的資料?
不是壓縮的嚕?
某乙 2003/3/1 上午 01:45 那怎麼去分辨?
某甲 2003/3/1 上午 01:45 嗯 有兩個 辦法 一個 是 設計新的cpu 一個是
由os的 kernel 去做
某甲 2003/3/1 上午 01:45 他也不是壓縮
某乙 2003/3/1 上午 01:46 我的意思是說.. 如果有一筆資料 0011 cpu
讀進來, 怎麼知道 1100 是可以直接執行的,
還是是要解壓縮的
某甲 2003/3/1 上午 01:47 這樣說好了 他是一串的 01碼不是嗎
當kernel(不軟體或硬體的) 讀到一串特殊的01碼
就知道 這是一串程式 他要執行
然後我一串常常的程式碼內 包含很多的
這種開始的 程式碼
但是這些開始的程式碼本身也是其他程式碼的
程式碼
某乙 2003/3/1 上午 01:49 嗯?
某甲 2003/3/1 上午 01:54 我舉例好了 以你剛說的 假設 kernel
知道只要是001開頭的就是起始好了
那一串 0010011110010100111100 那它可以看到
4個001 那這段程式 可以被當成有4個程式在工作
某乙 2003/3/1 上午 01:55 假設:
一串特殊的01碼 = 1111
但是這些開始的程式碼本身也是其他程式碼的
程式碼=0101 1111 0000100
^^^^ ^^^^ ^^^^^^^^
1 2 3
1 = 其它程式碼
2 = 特殊碼
3= 其它程式碼
怎麼辨識 1 = 0101, 而不是 01011 or 01011111
某甲 2003/3/1 上午 01:55 當那串01被讀入cpu後
或許可以放在站存區或快取 然後 快速的 讀取4次
而不用在外求
某乙 2003/3/1 上午 01:58 ok....我了解你的意思.... 就像你說的 001
是特殊碼, 問題就在這 001 是固定的嗎?!
也就是說只要cpu看到001就知道它是特殊碼?!
如果是這樣, 那跟現在的一般cpu指令有何不同?
某甲 2003/3/1 上午 02:00 跟線同的 再於 一次只能一串 然後出來一個解
但是 新的 可以一串進去
但是可能有包含多個獨立的問題 然後
丟出多個解
某甲 2003/3/1 上午 02:04 這樣可以嗎
某乙 2003/3/1 上午 02:04 是沒錯, 但是很慢呀....
001 001 111 00101 001 11100
^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^^^
1 2 3 4 5 6
基本上 cpu 還是依 123456 的順序執行, 因為 1
可能有多個解, 所以不可能先執行 2以後的東西
某乙 2003/3/1 上午 02:05 你說的方法是可以做得到的,
但是我認為最大的問題在於速度
某甲 2003/3/1 上午 02:07 但是 cpu的 管線深度 就可以做到 如此阿
不是 1 開始工作後 當1工作道地2層的管線時
然後2開始工作 然後 再來依序
這是說如果要用目前的cpu來做的話
某乙 2003/3/1 上午 02:09 是呀, 但是目前的 cpu 指令是固定的呀.....
那也就是除非你的特殊碼也是固定的...
也就是說以目前 cpu 來說只是 "新增的指令"
而已
某乙 2003/3/1 上午 02:10 如果指令不固定 cpu 無法預測結果
某甲 2003/3/1 上午 02:10 所以說以目前的化 要用os的支援 讓os 去 達到
可以辨識特殊碼 然後給cpu做的能力
我是這麼想啦
某甲 2003/3/1 上午 02:12 如果 下一代的cpu 或許 可以直接設計如此
然後 再針對不01碼的組合 做出特殊指令集
或許速度會更快
某乙 2003/3/1 上午 02:12 其使x86cpu本身就有很多類似的指令了
某乙 2003/3/1 上午 02:13 有呀, 像 mmx 之類的都算是呀
某甲 2003/3/1 上午 02:14 對阿 但是我是說
因為這套是由模仿生物的atcg的改良出來的
或許可以參考 細菌的 atcg 做出特殊的加速部分
某乙 2003/3/1 上午 02:15 嗯
-
看了很久都看不懂,一直不了解這個Idea要運用在什麼場合,小弟針對現有所認知的電腦作闡述,你的問題牽涉處理器及軟體開發等層面,自認涉獵不夠全面,現在稍微廢言一下,希望有所幫助。
[1] 站在精簡程式碼的角度來看,這個方法是不可行的。原因在於機械碼每一個指令都是相互獨立的,並不像DNA其自有之變異性,可以藉由一個DNA化出多個蛋白,機械碼之於處理器,就如同士兵對連長是一個口令一個動作。
[2] 人類的思考好比多台慢速電腦平行運算(好比千百萬部相互連結運算),雖然一般邏輯數學等運算,人類思考速度遠低於電腦許多,但若需要大量平行運算的時候,這時還是人腦較電腦強(如下圍棋,人腦連儲存都是平行運算處理。)。無論現代電腦多麼精進,在平行運算方面還是非常脆弱的,因此若是由處理器的微程式碼/機械語言指令集來下手,要能像生物一般演化,短時間內我想還是辦不到的,除了這樣的架構太過於複雜,成本太高,需要這麼強大平行處理的場合也不多。
[3] 以PC而言,約莫在486時代包含486之前,由於處理器運算速度不夠,作業系統也粗糙而老舊,因此在撰寫程式時,就特別要考慮程式執行時演算效能及資源的使用與分配是否合理。否則開發出來的軟體不是資源不足,就是效能太差根本無法使用。而當硬體越加進步之後,這個情況改變了,人們認為強大硬體可以不用讓程式撰寫人員像以前那樣注重程式語言的演算法。加上物件導向語言的崛起,其主要用意除了縮短程式開發的週期外,透過各種物件導向的元件使用,使得程式設計師的資源更為充足也是一個主要原因,這時候探討的不再是如何最佳化程式,而是如何寫出好的Idea的程式,以及如何良好的管理與撰寫程式,除非有某部分程式需要好的效能,才會考慮程式的最佳化或以低階語言撰寫該函式(事實上編譯器會針對原始程式在編譯時作最佳化,至於最佳化的程度則是各家編譯器皆不同)。
[4] 我不知道有關要用DNA變異的方法,你想運用在什麼場合。建議這一點你能夠說明清楚一點,我想這樣大家討論的方向會更清楚吧。
-
[QUOTE][i]最初由 purk 發表[/i]
[B]..恕刪..
某甲 2003/3/1 上午 02:04 這樣可以嗎
某乙 2003/3/1 上午 02:04 是沒錯, 但是很慢呀....
001 001 111 00101 001 11100
^^^ ^^^ ^^^ ^^^^^ ^^^ ^^^^^
1 2 3 4 5 6
基本上 cpu 還是依 123456 的順序執行, 因為 1
可能有多個解, 所以不可能先執行 2以後的東西
..恕刪..[/B][/QUOTE]
管線通常搭配指令預測,只要有一個預測錯誤,進入管線的指令就全部重來了,因此預測錯誤太多,處理器效能反而會大幅下降慘不忍睹。因此管線數及指令預測搭配是要最佳化的,並不是越大越好,這是錯誤觀念。
大概看了一下你的想法,恐怕預測錯誤會多的慘不忍睹...
-
小弟想說的是purk兄已經把近半世紀的電腦工業全面推翻了
因為你所想的編碼要有意義的話
必需從最基層的加減法器開始對應才有意義吧……
不然到頭來還是1bit1bit來算
實在看不出來有什麼效能上的改善……
不過就算你能夠生出一個支援你的編碼方式的硬體平台
大概也不會有多少人在用吧……
因為軟體支援性、平台移植性各方面都是很重要的因素!
就拿最簡單的電視遊樂器來看好了
現在最賣的是那一台主機
不用說,問10個人一定有12個人說是PS2
這是為什麼呢?
還不是他的軟體廠商眾多且幾乎完全相容過去的PS軟體
而性能比PS2強的Gamecube和XBOX呢?
還不是賣不好說……
這也就是為什麼我們現在PC還活在X86 CISC的陰影下……
-
我覺得有時候有不同的想法也很不錯啦,
apple2,8086剛出來的時候,根本沒人看好它,又小性能又差的小系統.
天曉的30年後的今天,他們的徒子徒孫大大的改變世界.
就是有人會突破舊有的觀念,才能創造新局面.
-
[QUOTE][i]最初由 zxczzz 發表[/i]
[B]我覺得有時候有不同的想法也很不錯啦,
apple2,8086剛出來的時候,根本沒人看好它,又小性能又差的小系統.
天曉的30年後的今天,他們的徒子徒孫大大的改變世界.
就是有人會突破舊有的觀念,才能創造新局面. [/B][/QUOTE]
不過那是那個時候
不管是那種架構的計算機都還在萌芽階段
現在的x86系統已經算是老樹盤根了
要能完全顛覆是不太可能的
如果有,也僅能活在一個小圈圈裡(如特定工作性質的work station或server)
-
[QUOTE][i]最初由 lenbo 發表[/i]
[B]不過那是那個時候
不管是那種架構的計算機都還在萌芽階段
現在的x86系統已經算是老樹盤根了
要能完全顛覆是不太可能的
如果有,也僅能活在一個小圈圈裡(如特定工作性質的work station或server) [/B][/QUOTE]
或許是老樹盤根吧,但也不是不可能歐.
舉個大家都知道的例子,19世紀的物理學家沒人會認為古典物理有瑕疵,
偏偏出了個愛因斯坦,把古典物理都變成了他相對論的特例.
而且就purk兄的概念來看,撇開技術面不談[這我完全不知]
只討論概念,我覺得可行歐(真的只是覺得),
現行的CUP執行一指令大概有下列步驟-----有錯要指正我.
1.由記憶體提取指令碼.
2.解讀指令
3.執行運算
4.將結果存回記憶體
每一條指令都必須經過這些步驟.
但若提取一段經編碼的指令,利用不同的解讀指令方式,可將一段這種指令,
解讀成數筆運算的指令,就可在步驟1省掉提取指令所花掉的時間.
同一筆這種指令,可同時輸入到不同的解讀單元,得到不同的運算指令,
又可在步驟2省下不少時間,就算執行運算的處理單元只有一個,
無法同時將這些運算指令做處理,但也不會比現行的方式慢.
舉個實際的想像例子.
若現行的指令碼為32 bit,代表一運算指令.
執行1行指令,現行的系統將
1.提取指令碼1次
2.解讀指令碼1次
3.執行運算1次
4.存回結果1次
---------------等於1筆運算指令
但若是提取編碼後的指令,有兩個解讀單元.
同樣執行1行32bit的編碼指令,系統將
1.提取1次編碼指令
2.解讀1次編碼指令,得到2個運算指令
3.執行運算2次
4.存回結果1次
---------------等於2筆運算指令
應該看的出來誰有效率吧.
接下來純屬個人想像,若未來CPU的效率為現行的50倍,
只要連結數台電腦,將可媲美現行的超級電腦,
意思就是說可將超級電腦搬回家中,執行核爆模擬,洲際飛彈彈道計算,
衛星軌道評估,現行毀滅性的武器,衛星偵查技術,都可在書房中完成模擬.
只差資金就可動手製造,可大大減少這些東西的開發時間,再透過網際網路,
或許你收到的郵件不再是笑話影片,而是一份完整的核彈製造步驟.
太空計畫白皮書.
真是不知道消費性電子產品的處理器做這麼快幹麻,
拿來打報告,玩遊戲,看電影我的K7-650就很棒了.
-
[QUOTE][i]最初由 zxczzz 發表[/i]
[B]或許是老樹盤根吧,但也不是不可能歐.
舉個大家都知道的例子,19世紀的物理學家沒人會認為古典物理有瑕疵,
偏偏出了個愛因斯坦,把古典物理都變成了他相對論的特例.
~~~~sorry文略[/B][/QUOTE]
不過愛因斯坦的相對論不用錢吧……[img]http://myweb.hinet.net/home3/lenbo/image/smilies/cute_eh.gif[/img]
-
[QUOTE][i]最初由 zxczzz 發表[/i]
[B]..恕刪..
但若提取一段經編碼的指令,利用不同的解讀指令方式,可將一段這種指令,
解讀成數筆運算的指令,就可在步驟1省掉提取指令所花掉的時間.
同一筆這種指令,可同時輸入到不同的解讀單元,得到不同的運算指令,
又可在步驟2省下不少時間,就算執行運算的處理單元只有一個,
無法同時將這些運算指令做處理,但也不會比現行的方式慢.
舉個實際的想像例子.
若現行的指令碼為32 bit,代表一運算指令.
執行1行指令,現行的系統將
1.提取指令碼1次
2.解讀指令碼1次
3.執行運算1次
4.存回結果1次
---------------等於1筆運算指令
但若是提取編碼後的指令,有兩個解讀單元.
同樣執行1行32bit的編碼指令,系統將
1.提取1次編碼指令
2.解讀1次編碼指令,得到2個運算指令
3.執行運算2次
4.存回結果1次
---------------等於2筆運算指令
應該看的出來誰有效率吧.
..恕刪..[/B][/QUOTE]
[1] 目前各家處理器,大多採取一次存取多個指令,並進行指令預測,判斷出最佳的指令執行排程,若是指令預測有誤,則再從記憶體提取指令。這個方式已經跟你所舉之例子類似了。
[2] 若是編碼的指令越複雜,則進行指令『解碼』的時間會越長,此方式恐怕反而會造成效能低落。
[3] 處理器的效能是否良好,並不決定於管線之多寡,架構之複雜或精簡與否。而是整體設計之匹配上。
[4] X86架構佔有率十分高,平台上的軟體也很多,要變更牽扯到硬體、軟體及應用層面,並不是一個人大刀闊斧說改就改。
例如說Y2K問題,當初會那麼令人擔憂的原因,牽扯的層面相關廣泛,又層層相扣。除了硬體的龐大升級費用要考慮外,軟體資料的轉換,以及現有已上線系統無法停止服務都有相關。
再舉個例(我的例子會不會有人不懂我的原意呢?):以目前Intel & AMD的64位元架構CPU,大部分人認為以AMD的方式會較為市場接受,因為Intel的是全新的64bit架構,而AMD則是能夠兼容。要淘汰舊有系統,恐怕只能像AMD的做法,先保有兩代的兼容性,待新架構已經普遍後,再來一點一點的剔除不良的舊架構。
-
[QUOTE=VicLin]喔....
抱歉~連回了三次= =
我剛剛才大概看懂你的意思
電腦裡面是很多很多很多無數微小開關組成的
而開關只能代表開和關兩種
並不能像你那個A什麼東西的
可以有四種狀態.....
但是....
如果你能發明一種電學的東西~有10種狀態的話....
那麼...1個的組合就有10種
2個的組合就有
100種
3個的祖合有
1000
4個的組合就有
10000種
相對於只有兩種狀態的開關
4個才
16....差那麼多.
當你發明了這個東西
比爾蓋子的錢都要輸你了[/QUOTE]現在看 可能需要硬體也要配合 硬體需要4種狀態 才能有好的效能 如果沒有那效能反而更低
thx
-
他的意思是說(我猜的啦)
比方說有一段程式碼0011
用A方式去解析0011這段程式碼得到A這個直
用B方式去解析0011這段程式碼得到B這個直
用C方式去解析0011這段程式碼得到C這個直
用D方式去解析0011這段程式碼得到D這個直
不過這對效能有啥幫助嗎??
~"~
-
01010101是二進位表示法,而且是可用數位訊號來表示的
ATCGATCG是四進位表示法,無法用數位訊號來表達
因此
八碼的01010101可以表達出2^8種狀態
八碼的ATCGATCG可以表達出4^8種狀態
但是八碼的ATCGATCG四進位的表示法如果要存入電腦中
依然得轉為數位訊號,轉換後會成為0101010101010101十六位元的二進位
所以不管用何種進制,都沒有哪一種會比較節省空間
會有差別的地方,只有是否適合數位訊號的問題
-
purk 兄說的, 會不會是一些科學家在研究的"生物電腦"?
[url]http://www.cnic.org/index.php/%E7%94%9F%E7%89%A9%E8%AE%A1%E7%AE%97%E6%9C%BA[/url]
[url]http://www.teema.org.tw/publish/moreinfo.asp?autono=1864[/url]
[url]http://www.nma.org.tw/bulletin/newslist.asp?web_id=msa&func_seq=2&serialno=692[/url]
目前的各式電腦, 基本上離不開所謂的"馮紐曼"(John von Neumann)電腦.
-
我覺得有可能是
壓縮時資料碼變的較小
解壓縮時資料碼變大
但是執行時有另一種『狀態』使資料碼變的更大
但是這個大小並不會影響速度,反而會增加執行速度
有可能是因為這樣的關係讓CPU更好了解
相對的就要浪費掉可能好幾倍的容量
你想表達的是這個嗎?
-
回覆: 【?】有這種程式嗎
翻了一下5年前自己的發言
這裡[url]http://www.pczone.com.tw/post/502241/24/[/url] 已經有網友部
分理解到我的意思了
我現在比較清楚自己的概念
重新再說明一下
X86CPU不是有很多單元組成嗎?也有很多特殊的加速用指令集
假設每個指令集都特化出來變成前端的解碼單元
這樣一道程式碼就可以在每個前端的解碼單元上因為長度不同
而被視為不同的程式碼
之後進入運算的時候 一樣使用特化的處理流程
最後將總合的結果 由一個特殊單元整合 再將結果呈現出來
例如
觸摸在燃燒的火這樣一個景象
對於眼睛來說是看到紅光的訊息
對於手上的神經得到的是燙的訊息
總和運算後
得到的是 看到與感受到的畫面
又假如一個圖形程式碼
物理運算單元處理物理特性的部分
多邊型運算單元處理多邊型的部分
著色單元處理著色部分
.....etc
然後整合輸出變成一個具有真實感的物件
以上
謝謝
-
回覆: 【?】有這種程式嗎
抱歉,我不是學生物的
不過我想我應該了解你的意思了
不過不知道您的用途是什麼呢?
這並不是所謂的解壓縮還是壓縮的概念
我覺得只是自訂型別概念跟使用者介面+邏輯的概念而已
另外,電腦算數字[U]不是[/U]想像的那樣
就是用這種12345(ANSI: 31 32 33 35)這樣算給你看
舉例:
我是這樣實做身分證字號儲存
例如A100000001佔10byte
身分證字號前面第一碼英文只有26個,第二碼不是1就是2
換句話說只需要26x2=52的範圍即可
所以我們只須取一個十位數來儲存
第3碼~第9碼的數字就照抄,第10碼是檢查號,我覺得有沒有記下來都沒差
轉為數字的話假定是11,000,0000 (16進位表示: 41 90 AB 00)
使用int型別就好,這樣只需要佔4byte
這樣就可以降低資料庫的負擔,扔前端處理
不指省空間,查詢又快速,尤其資料量很大
4byte去資料庫撈資料絕對比10byte來的快速
[I](ps:就SQL來講,身分證字號一般都會作為唯一鍵甚至主鍵
主鍵(PK)佔位元組數越少,以及使用固定位元組數的型別,越能夠降低撈資料時對資料庫的負擔,與提高效能)[/I]
而且對電腦而言,處理數字會比字串來的快很多
就好像一般在紀錄日期,都是紀錄下該時間距離某個時間點的秒數
而不是紀錄下一大串有的沒的
(人類或許要算個老半天才會知道是哪個時間點,但電腦並不是)
一定要英文字來做DNA的代號嗎?
何不用數字來取代會比較方便?
例如:
ATTTTGGGCCCTTTGGAAATTTCCGGG
122223334445554411122244333
超過long型別長度了,那就用雙long型別吧,雙long總計只佔16byte
簡單來講就是分兩串數字
1222233344455,54411122244333(16進位表示:00 00 01 1C 92 C8 C9 C7,00 00 31 7C 93 9C FA ED)
一開始就不要有一定要「人類容易理解的文字」的想法來寫程式
老實說這樣做該程式員會死的很慘
反正這些是給電腦看的
計算出結果以後
前方顯示用的UI在另行轉換給人看就好了
另外不過不知道你是不是有這樣的想法
1222233344455,54411122244333
上面有兩串數字,第一串會一直變動
但第二串"幾乎"是固定的幾組?
如果是的話,後面直接做個範本,搭配null(空值)使用即可
例如:
num1 = 1222233344455
num2 = null
num2TemplateID = 2
num2TemplateID使用byte型別
簡而言之只需要浩8byte+1byte的空間
或是
num1 = 1222233344455
num2 = 54411122244333
num2TemplateID = null
另PS:
byte=位元組 共佔1byte 範圍:0~255
short=短整數 共佔2byte 範圍:0 ~ 65535
int=整數 共佔4byte 範圍:0 ~ 4294967295
long=長整數 共佔8byte 範圍: 0 ~ 18446744073709551615
不同程式語言可能名字不太一樣,但是都大同小異
請參考XD
-
回覆: 【?】有這種程式嗎
如果小弟沒弄錯的話,purk兄的概念應該是在說"廣展似運算法"。
從一個關鍵,再發展出另一個結果出來,最後統結所有的結果。
就以例子來說,小弟當初是想查PS2的主機規格,之後不知道為什麼變成了調查Xbox360、Wii、DreamCast、Nintendo64、NDS、PSP... 的規格起來,最後再統一所有的規格來做比較。
這個過程大概就是這樣。由一個小小的開始-> 然後演變成了大量的搜索量(運算)-> 最後統一全部規格成為精簡的比較表。
說到這類的程式,自己覺得 Google 類的搜索方式很相似這樣的概念。
以一般比較單純的搜索器,例如我輸入 "pczone bsd lenbo",系統就會認為這些都是整句關鍵詞,除非有標題是這樣寫,不然會出現找不到結果。
如果用Google搜索的話,它就會很聰明的將關鍵詞分成三份 "pczone"、"bsd"、"lenbo"。
而同時又會出現不同的結果如 "pczone" 又有 "pczone" 的結果,"bsd" 下也有關 "bsd" 的結果,"lenbo" 又有關 "lenbo" 的回文之類的結果。
這只是舉例,不要問小弟為什麼要用 lenbo。 XD
先不談運算,使用這樣概念的好處是電腦可以更"智能化",它可以有像人類想法那樣從一種東西自我做出了很多想像、判斷出很多有關的可能性。
如果套用在程式上的話,主程式碼可以非常小或精簡,它本身只需要具備些基本的"關鍵",然後電腦就會根據那些關鍵"自我想像",並將我們要的結果展現出來。
這在程式開發上,跟調用 API 的想法類似。不過調用 API 的概念是 "沒有的東西就是沒有",系統沒有提供,除非自己開發,不然它不會自動生出來。
說到壞處的話,以現今技術來說,根據用途,運算需求量大小也不同,且主系統也需要有大量的"基本樣本"提供來做判斷。
用在關鍵字上,就像 Google 那樣做出並行運算處理器,然後具備了大量的關鍵詞做索引,基本上就可以做到這樣的"智能化"。
聽說[url=http://zh.wikipedia.org/wiki/Windows_7#.E5.85.B6.E4.BB.96.E5.8A.9F.E8.83.BD] Windows 7(暫稱) [/url]也會加入類似的功能。不過如果用在繪圖上、影音上,恐怕還有一段路要走。
成功的話,到時影片不再是以 frame by frame 壓縮了。而是可以 real time rendering 且也可以很順暢的播放出來。
以上只是小弟提出自己的個人看法,雖然說了很多廢話。
-
回覆: 【?】有這種程式嗎
人說的應該是人工智慧中的基因演算法吧
上學期教AI時有教到
-
回覆: 【?】有這種程式嗎
不是不可能,但是purk兄的想法還不成熟。
首先要把一段碼依據不同的方法讀取來做不同功能性的利用,就會讓編譯器和程式設計者白花很多腦筋。壓縮程式之所以慢不是沒原因的。與其浪費心力時間去製造出那樣的碼,目前的軟硬體本身早就有類似的功能,prefetch、SIMD 等等,不是沒人用,只不過是個人電腦的程式太雜了,可能程式已經在用但你不知道而已,或是程式設計者根本還在用老方法寫程式,所以使用者老覺得性能不彰。
另外,很多時候程式慢是另有原因,不得不等。
最後,其實這樣的程式現在也不是沒有,但是也不是每個程式都適合這樣寫,資料型態影響很大。
-
回覆: 【?】有這種程式嗎
差不太多的程式碼吧...現在硬碟的價格越來越便宜,1G也在8,9塊錢了(硬碟),比起請一堆設計師來寫,可能讓使用者少個1,2GB可用會比較實在
-
回覆: 【?】有這種程式嗎
電腦最大的問題在於他只認識0跟1,而人類試圖將不是0跟1的思考運作,
想辦法讓他接近0跟1。我想只能做為參考,而不能當成結論,最後依舊需
要人腦做最後判斷吧。至於各種演算法則,不過是加速這些資訊運算的手
段,讓結果能夠更逼近或是更像人類的思考,但是應該還是無法取代人吧。
依據許多的研究顯示,人類的記憶容量似乎是沒有上限的,但是硬體的裝
置,皆有此限制。因為這種限制,就會侷限很多的想法,大概要靠時間與
新的理論慢慢克服吧。不是做不到,可能是相關週邊的輔助條件尚未到位。
-
回覆: 【?】有這種程式嗎
我相信這種分析DNA 的程式是有的
但都是基因工程的實驗室內部在用,不會提供給他人使用。
如果想要這種專業程式就要請人設計 !
不過可以搜尋看看~ 也許有人分享出來
-
回覆: 【?】有這種程式嗎
山賊來試著解讀 purk 君的想法:
purk 君的想法可能是這樣:
同一筆記錄資料, 當從不同位置讀取時, 代表意義與所需執行動作就不同, 因此可以單拿一筆資料, 同時分別給不同定址偏移量的程序器解讀執行, 完成所需動作, 舉例如下:
譬如某編碼代表字分別為 A 與 B, 若某一筆資料, 其內容是 AB , 則從左邊第一個位置為起始點讀取, 其對映狀態編碼就是 AB, 我們稱為動作 1, 若是從左邊第二個位置為起始點來讀取, 其對映狀態編碼就是 BA, 我們稱為動作二, 其它依此類推; 因此可以分別由不同起始位址偏移量的程序器來執行操作不同的動作..
譬如當某一程式檔案的內容是:
資料內容 ABAAABBA
儲放位址 01234567
對程序器 0 來說, 位址偏移量為 0, 程式碼內容及執行動作順序為
AB
AA
AB
BA
對程序器 1 來說, 因為位址偏移量為 1, 假如程序器 1 的結構與程序器 0 相同, 那麼對它來說, 資料內容, 程式碼內容及執行動作順序變為
資料內容 BAAABBAA
儲放位址 01234567
BA
AA
BB
AA
以上是以兩個字為程式碼的運算執行單元, 也就是說只有四種狀態動作 AA, AB, BA, BB, 而檔案長度限制在 8 個字 ..
若用四個字為運算執行單元, 也就是說有 16 種狀態動作, 那對程序器 0 與 1 來說, 就變成:
程序器 0 執行的程式碼
ABAA
ABBA
程序器 1 執行的程式碼
BAAA
BBAA
倘若 purk 君的想法是這樣, 理論上是可以用一個檔案, 來代表不同意涵; 之前炒作過一陣子的 "聖經密碼", 就是用這種手法, 運用不同的起始位置, 不同的區間(可使用固定區間或是以某方程式來代表, 譬如 y=y+3y), 將最終挑選出來的字組集合循序來組合, 若能組成有意義的文句, 便將之視為某個預言, 若無意義則捨棄, 因此改變不同的起始位置與區間, 可以獲得不同的預言; 理論上可以運用主觀的操作手法, 獲得主事者想要的預言; 這種方法, 也可以反向運用, 成為加密的手段..