banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Code có thể xuất mã nguồn của chính mình  XML
  [Programming]   Code có thể xuất mã nguồn của chính mình 18/07/2008 23:08:12 (+0700) | #1 | 142112
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]
Viết một đoạn code như thế nào để đoạn code có thể xuất mã nguồn của chính đoạn code đó
Ví dụ 1 chương trình đơn giản
Code:
#include <iostream.h>
void main()
{
   cout <<"Hello World!;
    getch();
}

Khi dịch sang exe, run nó thì sẽ kết xuất như sau
Code:
#include <iostream.h>
void main()
{
   cout <<"Hello World!;
    getch();
}


Chính là mã nguồn file đó. Xin anh em thảo luận
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 18/07/2008 23:47:28 (+0700) | #2 | 142122
lamer
Elite Member

[Minus]    0    [Plus]
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
[Profile] [PM]
Một trong những đáp án (viết bằng Python):

Code:
s = 's = %c%s%c%cprint s %% (39, s, 39, 10)'
print s % (39, s, 39, 10)
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 00:47:21 (+0700) | #3 | 142141
[Avatar]
Z0rr0
Q+WRtaW5pc3RyYXRvc+g

Joined: 14/08/2002 12:52:01
Messages: 1323
Location: Underground
Offline
[Profile] [PM] [WWW] [Yahoo!]
Có thể trình độ chưa tới, tui chưa thể làm được với C++ smilie
Hibernating
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 10:13:28 (+0700) | #4 | 142247
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]

Z0rr0 wrote:
Có thể trình độ chưa tới, tui chưa thể làm được với C++ smilie 

Không cần thiết phải là ngôn ngữ gì. Chúng ta tập trung vào phương thức, cách thức để thực hiện thôi
Code:
s = 's = %c%s%c%cprint s %% (39, s, 39, 10)'
 print s % (39, s, 39, 10)

Mình chưa hiểu ý của bồ. Bồ có thể giải thích rõ ràng hơn không.
Nếu là một đoạn code dài thì cách của bạn không khả thi
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 11:32:30 (+0700) | #5 | 142256
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Dùng predefined macro __FILE__ hay debug info là có thể tự đọc và xuất ra source của chính exe đó, với đk source đó còn tồn tại và valid.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 12:23:58 (+0700) | #6 | 142269
lamer
Elite Member

[Minus]    0    [Plus]
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
[Profile] [PM]

greenlove wrote:
Mình chưa hiểu ý của bồ. Bồ có thể giải thích rõ ràng hơn không. 


Nếu bạn đã cài Python thì bạn tạo một file (ví dụ như test.py) chứa hai dòng đó, và chạy file test.py, nó sẽ in ra đúng hai dòng đó.

greenlove wrote:
Nếu là một đoạn code dài thì cách của bạn không khả thi 


Câu hỏi gốc không nói cụ thể như thế nào nên mình nhí nhố đưa ra một giải đáp thế thôi. Còn nếu ý bạn muốn in ra source bất kỳ thì mình không đủ khả năng làm.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 22:18:39 (+0700) | #7 | 142309
mèo lười
Member

[Minus]    0    [Plus]
Joined: 13/06/2008 16:36:17
Messages: 7
Offline
[Profile] [PM]
Theo ý kiến của em làm việc này có thể được. Cụ thể như các compiler trong linux (GCC, G++) chẳng hạn, khi compiler nếu có option -g thì khi dùng gdb để debug, chỉ cần gõ list ra một phát thì ra ngay source code. Nên có thể suy đoán.
khi compile:
gcc ex1.c -o ex1 -g 

thì trong binary của ex1 có gì khác so với cách compile thông thường
gcc ex1.c -o ex1 

Và thằng gdb nó dùng "chiêu" gì để khi gõ lệnh lệnh list, nó hiện lại source code ?
Đây cũng là câu hỏi của em, mong các bác chỉ dạy
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 19/07/2008 22:18:43 (+0700) | #8 | 142310
tuandinh
HVA Friend

Joined: 05/09/2002 12:44:34
Messages: 210
Location: Thiên đường tình ái
Offline
[Profile] [PM]
Đây quả thực là một câu hỏi thú vị! Theo tôi hiểu thì bạn đang yêu cầu 1 đề bài là: hãy viết một chương trình in chính nó ra ?

Nếu đúng như vậy thì tôi đoán có lẽ bạn đang muốn đề cập đến Quine (xem thêm ở: http://www.nyx.net/~gthompso/quine.htm) ?

Về mặt bản chất, nếu bạn đang đặt vấn đề như tôi nghĩ, thì yêu cầu của bạn ( viết chtrình tự in nó ra) phần nào đó giống sự "tự sinh" của virus.

Trước khi hiểu ý đồ của bạn để chúng ta tiếp tục thảo luận, mời bạn nêu lại kỹ vấn đề của mình.

[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 00:20:13 (+0700) | #9 | 142333
mfeng
Researcher

Joined: 29/10/2004 15:16:29
Messages: 243
Offline
[Profile] [PM]

Z0rr0 wrote:
Có thể trình độ chưa tới, tui chưa thể làm được với C++ smilie 

Giải pháp (hơi ... thô) là đem mã nguồn nhúng vào resource, chương trình khi chạy sẽ lấy và in ra màn hình smilie
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 00:53:16 (+0700) | #10 | 142340
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]

greenlove wrote:
...
Nếu là một đoạn code dài thì cách của bạn không khả thi 


Vậy mục đích của bạn là viết code xuất mã nguồn của chính mình hay viết 1 đoạn code dài phức tạp?

Có lẽ mình chưa hiểu rõ lắm ý nghĩa thực tiễn của đoạn code mà bạn cần smilie

p/s: cách của mfeng hay nhứt! smilie
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 03:29:36 (+0700) | #11 | 142355
tuandinh
HVA Friend

Joined: 05/09/2002 12:44:34
Messages: 210
Location: Thiên đường tình ái
Offline
[Profile] [PM]
Ai lại đi làm như mfeng bao giờ smilie

Nói chung, chương trình tự tham chiếu ( self reference ) có rất nhiều ứng dụng. Các bạn đừng ném đá linh tinh, để cho chủ nhân topic tiếp tục đề tài này !
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 06:32:22 (+0700) | #12 | 142375
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]

tuandinh wrote:
Đây quả thực là một câu hỏi thú vị! Theo tôi hiểu thì bạn đang yêu cầu 1 đề bài là: hãy viết một chương trình in chính nó ra ?

Nếu đúng như vậy thì tôi đoán có lẽ bạn đang muốn đề cập đến Quine (xem thêm ở: http://www.nyx.net/~gthompso/quine.htm) ?

Về mặt bản chất, nếu bạn đang đặt vấn đề như tôi nghĩ, thì yêu cầu của bạn ( viết chtrình tự in nó ra) phần nào đó giống sự "tự sinh" của virus.

Trước khi hiểu ý đồ của bạn để chúng ta tiếp tục thảo luận, mời bạn nêu lại kỹ vấn đề của mình.

 


Cảm ơn anh tuandinh. Đề bài của anh chính là vấn đề em muốn thảo luận. Để các bạn khỏi nhầm lẫn vấn đề xin mod edit lại tittle. Do từ ngữ em ít quá nên lúc đó chưa diễn đạt được vấn đề. smilie .
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 06:34:12 (+0700) | #13 | 142376
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]

mèo lười wrote:
Theo ý kiến của em làm việc này có thể được. Cụ thể như các compiler trong linux (GCC, G++) chẳng hạn, khi compiler nếu có option -g thì khi dùng gdb để debug, chỉ cần gõ list ra một phát thì ra ngay source code. Nên có thể suy đoán.
khi compile:
gcc ex1.c -o ex1 -g 

thì trong binary của ex1 có gì khác so với cách compile thông thường
gcc ex1.c -o ex1 

Và thằng gdb nó dùng "chiêu" gì để khi gõ lệnh lệnh list, nó hiện lại source code ?
Đây cũng là câu hỏi của em, mong các bác chỉ dạy 


Ôi, bạn chưa hiểu vấn đề rồi. Mình không phải muốn xuất source thong qua complier. Mình cần 1 source có thể xuất mã nguồn của chính nó.

mfeng wrote:

Z0rr0 wrote:
Có thể trình độ chưa tới, tui chưa thể làm được với C++ smilie 

Giải pháp (hơi ... thô) là đem mã nguồn nhúng vào resource, chương trình khi chạy sẽ lấy và in ra màn hình smilie  


Trời. Vậy thì còn gì là lập trình nữa smilie

Xin các bồ tiếp tục thảo luận
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 07:00:41 (+0700) | #14 | 142378
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Tới giờ tui cũng không biết code mà có thể tự xuất mã của nó làm được cái gì, ứng dụng như thế nào. Vậy mà sao nhiều forum, topic cứ bàn luận về cái này.
Chỉ thấy gần gần nhất là cách đây không lâu, có 1 con virus TQ nhúng source C và cl.exe, clx.dll vào để compile và run.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 09:19:27 (+0700) | #15 | 142397
[Avatar]
pham.channhan
Member

[Minus]    0    [Plus]
Joined: 30/12/2007 23:28:22
Messages: 81
Location: Nhàcủamìnhtới
Offline
[Profile] [PM] [Yahoo!]
Mình có ý kiến này[mình chưa test, mong mọi người test thử], nếu chỉ đơn giản là cắt 1 phần nào đó của ct bạn muốn cắt,viết nó lại thành 1 file mới, thì sao ta ko mở nó dưới dạng nhị phân, sau đó viết lại file đó với nội dung nhị phân. Còn bạn muốn lấy nguyên code như lúc bạn viết thì chắc chỉ còn nước "chôm" code của 1 decomplier nào đó thôi!







Thánh nhân nói nghìn điều thì cũng có 1 điều sai--->mọi sai sót xin được lượng thứ
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 09:34:49 (+0700) | #16 | 142402
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]

TQN wrote:
Tới giờ tui cũng không biết code mà có thể tự xuất mã của nó làm được cái gì, ứng dụng như thế nào. Vậy mà sao nhiều forum, topic cứ bàn luận về cái này.
Chỉ thấy gần gần nhất là cách đây không lâu, có 1 con virus TQ nhúng source C và cl.exe, clx.dll vào để compile và run. 


Vì đây là một vấn đề hay. Về việc ứng dụng thì rất nhiều. Vì điều em thắc mắc vẫn chưa có lời giải đáp smilie
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 20/07/2008 20:58:50 (+0700) | #17 | 142452
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Nó ứng dụng như thế nào, cậu chỉ ra một vd trong thực tế thử xem sao.
Tui coding đã lâu mà chưa bao giờ đụng tới vấn đề này cả. Chỉ thấy đây là vấn đề lý thuyết, xem cho vui thôi, không có ích gì cả.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 21/07/2008 22:02:24 (+0700) | #18 | 142594
tuandinh
HVA Friend

Joined: 05/09/2002 12:44:34
Messages: 210
Location: Thiên đường tình ái
Offline
[Profile] [PM]
Hi mọi người

Về vấn đề này, anh Ngô Quang Hưng có viết chi tiết ở blog khoa học máy tính của anh. Các bạn có thể xem ở:
http://www.procul.org/blog/2005/04/10/chuong_trinh_tu_tai_sinh/

[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 22/07/2008 00:14:30 (+0700) | #19 | 142617
[Avatar]
Z0rr0
Q+WRtaW5pc3RyYXRvc+g

Joined: 14/08/2002 12:52:01
Messages: 1323
Location: Underground
Offline
[Profile] [PM] [WWW] [Yahoo!]

lamer wrote:
Một trong những đáp án (viết bằng Python):

Code:
s = 's = %c%s%c%cprint s %% (39, s, 39, 10)'
print s % (39, s, 39, 10)
 


Cái này cũng là dùng một chuỗi mô tả code chính mình, ko khác gì mấy với việc nhúng toàn bộ code vào resource rồi đọc/in ra. Ví dụ dùng C++ của tuandinh đưa trong link cũng vậy.
Hibernating
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 22/07/2008 01:02:51 (+0700) | #20 | 142623
lamer
Elite Member

[Minus]    0    [Plus]
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
[Profile] [PM]

Z0rr0 wrote:

lamer wrote:
Một trong những đáp án (viết bằng Python):

Code:
s = 's = %c%s%c%cprint s %% (39, s, 39, 10)'
print s % (39, s, 39, 10)
 


Cái này cũng là dùng một chuỗi mô tả code chính mình, ko khác gì mấy với việc nhúng toàn bộ code vào resource rồi đọc/in ra. Ví dụ dùng C++ của tuandinh đưa trong link cũng vậy. 


Không biết zorro có biết mình đang nói gì không nữa smilie Không khác gì mấy với việc nhúng code vào resource rồi đọc ra lại à? smilie
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 22/07/2008 03:02:19 (+0700) | #21 | 142633
[Avatar]
Z0rr0
Q+WRtaW5pc3RyYXRvc+g

Joined: 14/08/2002 12:52:01
Messages: 1323
Location: Underground
Offline
[Profile] [PM] [WWW] [Yahoo!]
Có thể mình nghĩ việc tự xuất mã nguồn của chính mình trong C++ là quá xa vời, vì theo mình hiểu rằng tự in mã nguồn thì không nên biết mã nguồn mình có gì.
Chứ cái kiểu "print s='print...'" thì coi như mình biết mình làm gì rồi, cứ thế mà tùy biến sao cho ra những chuỗi giống như code mình mà thôi smilie
Hibernating
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 22/07/2008 03:35:14 (+0700) | #22 | 142642
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Theo nghiên cứu của mình thì quá trình in ( đọc ) lại chính bản thân mã nguồn của một program giống như một phần tất yếu của quá trình sống sinh học, một thực thể sống sinh học cần tự tham chiếu lại mã ADN của chính nó ( mà ở một program máy tính thì là đọc lại chính mã nguồn của nó ) để phục vụ cho quá trình tự tái tạo và tạo đột biến ( tiến hóa ). Quá trình tự tái tạo mà ta hay nhìn với cái nhìn một cách máy móc là "copy", một program sinh ra một program khác y chang nó , vì chúng ta hay nhìn một program trên phương diện những dòng lệnh cấp cao ( mã thân thiện với con người ) có mối quan hệ chặt chẽ từ câu lệnh này với câu lệnh khác thay thì hiểu rằng nó là một tập các dòng lệnh mã máy ( binnary code ) mà mỗi dòng thể hiện một hành động xác định ( thiếu tính quan hệ vì mỗi dòng chỉ đơn giản là một "lệnh" mà máy phải làm giống như một ông chủ ra lệnh cho nô lệ ) .Vô hình chung ta cứ nghĩ việc tự "copy" là program tự tạo ra một một "file" tương tự, thay vì hiểu đó là một quá trình mà program tự đọc từng dòng code ( dạng binnary code ) của nó rồi ghi lại dưới dạng một "file".Tư tưởng của quá trình tự in ( đọc ) source của một program máy tính tương tự với tư tưởng duy trì nòi giống của thực thể sinh học.

Chút ý kiến,
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 22/07/2008 14:33:07 (+0700) | #23 | 142757
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]
Sau khi xem xong Blog Khoa học máy tính, và các ý kiến trên diễn đàn đã giúp em sáng tỏ nhiều điều. Xin cảm ơn các anh
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 24/07/2008 08:52:36 (+0700) | #24 | 143053
[Avatar]
Tal
Member

[Minus]    0    [Plus]
Joined: 15/09/2007 16:50:17
Messages: 67
Offline
[Profile] [PM]

xnohat wrote:
Theo nghiên cứu của mình thì quá trình in ( đọc ) lại chính bản thân mã nguồn của một program giống như một phần tất yếu của quá trình sống sinh học, một thực thể sống sinh học cần tự tham chiếu lại mã ADN của chính nó ( mà ở một program máy tính thì là đọc lại chính mã nguồn của nó ) để phục vụ cho quá trình tự tái tạo và tạo đột biến ( tiến hóa ). Quá trình tự tái tạo mà ta hay nhìn với cái nhìn một cách máy móc là "copy", một program sinh ra một program khác y chang nó , vì chúng ta hay nhìn một program trên phương diện những dòng lệnh cấp cao ( mã thân thiện với con người ) có mối quan hệ chặt chẽ từ câu lệnh này với câu lệnh khác thay thì hiểu rằng nó là một tập các dòng lệnh mã máy ( binnary code ) mà mỗi dòng thể hiện một hành động xác định ( thiếu tính quan hệ vì mỗi dòng chỉ đơn giản là một "lệnh" mà máy phải làm giống như một ông chủ ra lệnh cho nô lệ ) .Vô hình chung ta cứ nghĩ việc tự "copy" là program tự tạo ra một một "file" tương tự, thay vì hiểu đó là một quá trình mà program tự đọc từng dòng code ( dạng binnary code ) của nó rồi ghi lại dưới dạng một "file".Tư tưởng của quá trình tự in ( đọc ) source của một program máy tính tương tự với tư tưởng duy trì nòi giống của thực thể sinh học.

Chút ý kiến, 


Nhưng nếu chỉ đọc binary code thì làm sao bạn có thể xuất được chương trình ra mã C (ngôn ngữ chương trình được viết)? Theo mình biết thì ta chỉ có thể decode binary code ra asm thôi chứ nhỉ smilie
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 24/07/2008 08:57:53 (+0700) | #25 | 143055
[Avatar]
Tal
Member

[Minus]    0    [Plus]
Joined: 15/09/2007 16:50:17
Messages: 67
Offline
[Profile] [PM]

Z0rr0 wrote:
Có thể mình nghĩ việc tự xuất mã nguồn của chính mình trong C++ là quá xa vời, vì theo mình hiểu rằng tự in mã nguồn thì không nên biết mã nguồn mình có gì.
Chứ cái kiểu "print s='print...'" thì coi như mình biết mình làm gì rồi, cứ thế mà tùy biến sao cho ra những chuỗi giống như code mình mà thôi smilie 


Em nghĩ nếu chương trình tự in chính nó mà không có bất cứ thông tin gì về đối tượng cần in thì làm sao nó in được. Còn nếu nó có thể in mã nguồn mà không cần biết mã nguồn có gì (không có thông tin về đối tượng) thì nó phải đọc thông tin từ đâu đó chứ?
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 26/07/2008 10:09:05 (+0700) | #26 | 143419
nccnm
Member

[Minus]    0    [Plus]
Joined: 23/09/2004 08:34:51
Messages: 6
Offline
[Profile] [PM]
Hi all, hồi trước sau khi đọc blog của anh Hưng mình cũng ra được 1 em viết bằng C#
Code:
class PrintMyself { static void Main(string[] args) {string x1 = ";char[] x2 = {'c','l','a','s','s',' ','P','r','i','n','t','M','y','s','e','l','f',' ','{','{',' ','s','t','a','t','i','c',' ','v','o','i','d',' ','M','a','i','n','(','s','t','r','i','n','g','[',']',' ','a','r','g','s',')',' ','{','{','s','t','r','i','n','g',' ','x','1',' ','=',' ','{','0','}','{','1','}','{','0','}'};System.Console.Write(string.Format(new string(x2), (char)34, x1) + x1);}}";char[] x2 = {'c','l','a','s','s',' ','P','r','i','n','t','M','y','s','e','l','f',' ','{','{',' ','s','t','a','t','i','c',' ','v','o','i','d',' ','M','a','i','n','(','s','t','r','i','n','g','[',']',' ','a','r','g','s',')',' ','{','{','s','t','r','i','n','g',' ','x','1',' ','=',' ','{','0','}','{','1','}','{','0','}'};System.Console.Write(string.Format(new string(x2), (char)34, x1) + x1);}}
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 26/07/2008 14:31:00 (+0700) | #27 | 143449
LeVuHoang
HVA Friend

Joined: 08/03/2003 16:54:07
Messages: 1155
Offline
[Profile] [PM]
Theo cá nhân Hoàng tui thì cũng đồng tình với Z0rr0. Cái này nhảm quá. Cái được gọi là "tự tái sinh" hay của bác lamer thực chất cũng chỉ là "gõ lại toàn bộ mã của nó vào chương trình" rồi xuất ra thôi. May đây chỉ là 1 đoạn sample ngắn. Nếu là 1 project khoảng vài chục files, ko lẽ bạn ngồi nhét từng source vào resource hay type lại như kiểu của lamer?
Ý kiến tiếp theo sau cũng đồng tình với bác TQN, chả biết ứng dụng để làm gì :-|.

Chương trình tự tái sinh có nhiều ứng dụng thú vị. “In bản thân” chỉ là một ví dụ của sự tái sinh.

Các virus máy tính đều có chức năng tái sinh “y chang” này, nhưng thay vì in ra stdout, chúng tự copy bản thân qua một địa chỉ mới (trong bộ nhớ, qua mạng, hay xuống đĩa cứng). Trong bài tiến hóa số tôi có đề cập đến các chương trình máy tính tự tái sinh dùng để mô phỏng tiến hóa của các loại “vi khuẩn số” đơn giản.
 

Phải không vậy? Virus tự tái sinh bằng cách "y chang" như vậy? Có ai làm ơi cho tui biết mấy cái PE Header dùng làm gì không? và virus có cần "đem toàn bộ source của nó theo .exe" để tái sinh theo cách này không trời.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 28/07/2008 12:32:09 (+0700) | #28 | 143723
[Avatar]
ngoalong
HVA Friend

Joined: 22/03/2003 04:33:38
Messages: 111
Offline
[Profile] [PM]
có lẽ nên thay từ "mã nguồn" bằng "mã máy"
đọc topic này xong thì như lạc vào "matrix" mất roài.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 08/10/2008 15:55:14 (+0700) | #29 | 154391
[Avatar]
greenlove
Member

[Minus]    0    [Plus]
Joined: 19/05/2008 16:18:37
Messages: 11
Offline
[Profile] [PM]
Vấn đề này, có đi đến tận cùng thì vẫn chưa có lời giải đáp hoàn chỉnh. Vấn đề tái sinh, tái sử dụng xuất hiện rất nhiều trong cuộc sống. Mình đang làm bài tiểu luận về vấn đề này.
[Up] [Print Copy]
  [Question]   Re: Code có thể xuất mã nguồn của chính mình 08/10/2008 16:43:01 (+0700) | #30 | 154393
nbthanh
HVA Friend

Joined: 21/12/2001 14:51:51
Messages: 429
Offline
[Profile] [PM]

Z0rr0 wrote:

lamer wrote:
Một trong những đáp án (viết bằng Python):

Code:
s = 's = %c%s%c%cprint s %% (39, s, 39, 10)'
print s % (39, s, 39, 10)
 


Cái này cũng là dùng một chuỗi mô tả code chính mình, ko khác gì mấy với việc nhúng toàn bộ code vào resource rồi đọc/in ra. Ví dụ dùng C++ của tuandinh đưa trong link cũng vậy. 

Z0rr0 thử đọc cái link thứ 2 mà tuandinh đưa ra http://www.procul.org/blog/2005/04/10/chuong_trinh_tu_tai_sinh/): đây là cả 1 môn (khoa) học đấy. Có sử dụng 1 số kiến thức toán học để đưa ra 1 công thức có thể viết 1 chương trình như vậy cho bất cứ ngôn ngữ lập trình nào.

Và từ công thức toán học đó, sau vài bước triển khai, tác giả bài viết cũng đã chỉ ra rằng, ta hoàn toàn có thể lấy 1 chương trình bất kỳ nào đó, và "thêm" vào nó chức năng "tự tái sinh" này mà không cần (hoặc rất ít) phải thay đổi code của nó.

(Edit) @LeVuHoang cũng thế: (hình như LeVuHoang đã đọc cái blog đó rồi rồi) đọc thêm cái blog đó khoảng vài...chục lần nữa sẽ dần thấy có nhiều cái thú vị ^_^

Tuy về mặt thực tế, ta chưa làm được điều mà ta muốn 100%. Nhưng hiện tại ta đã có hướng, và hướng đi này có 1 cái nền khá vững là một mô hình toán học đã được thiết lập cho nó.

Nhiều vấn đề trong khoa học máy tính cũng thế thôi. Vài chục năm trước làm gì có rô-bot hay chương trình trí tuệ nhân tạo như bây giờ. Nhưng các mô hình toán học cho nó đã có từ hồi đó và nó làm tiền đề cho các chương trình sau này.

Một điều thú vị là các lão làng và những người đi tiên phong trong lĩnh vực khoa học máy tính là các nhà Toán học, nhiều người thậm chí còn không biết lập trình!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|