• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Ngôn ngữ lập trình ILYC

Nơi giới thiệu các phần mềm tiện ích, các công cụ hổ trợ người dùng

Điều hành viên: Điều hành

Nội qui chuyên mục
Qui định gửi bài viết giới thiệu sản phẩm: viewtopic.php?f=39&t=6

[tenchuongtrinh][/tenchuongtrinh]
[phienban][/phienban]
[tacgia][/tacgia]
[chucnang][/chucnang]
[end][/end]
Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Tư 03/11/2010 9:19 pm

Tên chương trình: ILYC
Phiên bản: 0.3
Tác giả: Đặng Nhật Anh - AnhSoftware
Chức năng: Một ngôn ngữ lập trình có cú pháp dễ hiểu, thân thuộc; trình thông dịch đi kèm dễ dùng và có thể mở rộng qua các thư viện hàm ứng dụng công nghệ Microsoft .NET.



ILYC là viết tắt đệ quy của ILYC Leaves You Curious (ILYC làm cho bạn tò mò). Đây là một ngôn ngữ lập trình có cấu trúc đơn giản và dễ hiểu. Nó sử dụng cú pháp tương tự các ngôn ngữ phổ biến như C, Visual Basic, giúp cho người lập trình mau chóng tiếp cận và nắm bắt kỹ thuật một cách thuận tiện.

ILYC hỗ trợ bốn kiểu dữ liệu căn bản là luận lý (bool), số nguyên (int), số thực dấu phẩy động (float) và chuỗi (string). Ngoài ra, các hàm còn có thể dùng kiểu void quen thuộc trong C.

Trình thông dịch cho ILYC được tạo dựng trên nền tảng công nghệ Microsoft .NET. Đi kèm trình thông dịch là các thư viện hàm giúp phát triển khả năng của ngôn ngữ. Chính người lập trình cũng có thể viết ra các thư viện hàm này bằng các ngôn ngữ .NET như C# hay VB.NET.

Hiện tại, người lập trình có thể dùng một trong hai tiện ích thông dịch để thực thi mã nguồn ILYC. Tiện ích thứ nhất là ilyc.exe chạy ở dạng cửa sổ dòng lệnh (Console Application). Tiện ích thứ nhì, ilycw.exe là một IDE đơn giản mà dễ dùng, giúp cho việc soạn thảo mã lệnh và thực thi chương trình trở nên trực quan hơn hết.

Tài liệu đi kèm bộ IDE cùng với các tập tin mã nguồn ví dụ sẽ giúp cho người lập trình mau chóng hiểu được tính chất và cách vận hành của ILYC. Một lập trình viên trung bình chỉ cần bỏ ra vài ba ngày để hiểu được cách sử dụng ngôn ngữ này. Những người mới học cũng không tốn thời gian hơn bao nhiêu. ILYC có thể dùng làm "ngôn ngữ làm quen" cho những đang bước đầu tiếp cận bộ môn lập trình điện toán.

Do khả năng của tác giả có hạn, chương trình không tránh khỏi các sai sót. Tác giả rất mong nhận được sự đóng góp ý kiến từ những người đi trước, các chuyên gia, cũng như tất cả những người có quan tâm.


=================

Hình ảnh
ilycw.png
ILYC IDE

ilyc.png
Trình thông dịch tương tác cho ILYC


=================

CẬP NHẬT 26-12-2010
Phiên bản 0.2 đã được phát hành.

Có gì mới trong phiên bản này?
  1. Cấu trúc dữ liệu tự định nghĩa: giờ đây, mọi đối tượng đều là cấu trúc, có trường và phương thức thành phần của riêng nó.
  2. Mảng thực sự: mảng có thể chứa mảng, phần tử của mảng có thể truyền vào hàm theo tham chiếu. Có các phép toán ghép mảng. Có biểu thức đoạn [a, b] tạo mảng gồm dãy số nguyên từ a đến b.
  3. Các toán tử trên bit: gồm &, |, ^, ~, << và >>.
  4. Các toán tử mới: toán tử gán -<, toán tử typeof, toán tử in (tìm kiếm tuyến tính).
  5. Phát biểu switch.
  6. Vòng lặp for chia ra hai dạng: for..to và for..downto, dễ xác định hành vi hơn.
  7. Khai báo nhiều biến trong một phát biểu.
  8. Thủ tục có thể dùng cú pháp procedure thay cho function.
  9. Biến lỗi trong try..catch chứa nhiều thông tin hơn.
  10. Tập tin include có thể định nghĩa hàm maininc.

CẬP NHẬT 14-01-2011
Phát hành phiên bản 0.3.

Có gì mới trong phiên bản này?
  1. Ủy nhiệm hàm (delegate) và hàm vô danh (anonymous function).
  2. Kiểu dữ liệu Boolean.
  3. Phương thức ToString của cấu trúc tự định nghĩa có thể được gọi tự động khi cần, và có thể tái định nghĩa (override).
  4. Sửa một số lỗi trong phiên bản cũ.

=================
TẢI VỀ
Trang chính của dự án: http://ilyc.sourceforge.net/
Sửa lần cuối bởi alexanderdna vào ngày T.Sáu 14/01/2011 12:18 pm với 7 lần sửa.



Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 05/11/2010 8:59 pm

Bạn làm được một ngôn ngữ lập trình thế này thì quá tốt rồi :) Nếu phát triển để phát triển thành ngôn ngữ lập trình của người Việt thì tuyệt :D

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Bảy 06/11/2010 9:20 am

@vo_minhdat2007: cảm ơn bạn.

Chương trình vẫn đang ở giai đoạn sơ khai nên thực sự rất cần những lời phê bình từ mọi thành viên. Xin mọi người nhín chút thời gian góp ý kiến để sản phẩm này ngày càng được cải tiến.

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » CN 07/11/2010 10:14 am

Đã đăng mã nguồn của chương trình trên trang SourceForge.
Xin xem bài viết trên cùng để biết đường liên kết đến trang dự án.

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Hai 08/11/2010 1:28 pm

Một số ví dụ về ILYC
Nhằm giúp quý vị có cái nhìn sơ lượt về cú pháp cũng như đặt điểm của ILYC, tôi xin trích đăng một số ví dụ đơn giản dưới đây.

Hello World kinh điển:
  1. function void main() do
  2.     puts("Hello World!")
  3. done


Cộng hai con số:
  1. procedure main() do
  2.     print("a = ")
  3.     int a = toint(reads())
  4.     print("b = ")
  5.     int b = toint(reads())
  6.  
  7.     int c = add(a, b)
  8.     puts("a + b = " + c)
  9. done
  10.  
  11. function int add(int a, int b) do
  12.     return a + b
  13. done


Sắp xếp kiểu nổi bọt:
  1. function void bubbleSort(ref int[] a) do
  2.     int tmp
  3.     int swapped = 1
  4.     while swapped loop do
  5.         swapped = 0
  6.         for i from 0 to sizeof(a) - 1 loop
  7.             if a[i] > a[i + 1] then do
  8.                 tmp = a[i]
  9.                 a[i] = a[i + 1]
  10.                 a[i + 1] = tmp
  11.                 swapped = 1
  12.             done
  13.     done
  14. done


Tính giai thừa:
[text]function int fact(int n) do
if n <= 1 then
return 1
else
return n * fact(n - 1)
done[/text]

Trích chuỗi
[text]function void main(int argc, string[] args) do
if argc = 0 then
return

string s = args[0].Substring(0, 5)
puts(s)
done[/text]
Sửa lần cuối bởi alexanderdna vào ngày CN 26/12/2010 11:07 am với 1 lần sửa.

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi lungocqua » T.Hai 08/11/2010 3:22 pm

Sao trên trang đó toàn là tiếng Anh không vậy bạn? Không có tí tiếng Việt nào hết! :(
Bạn nên viết thêm cái .Net dành riêng, mang tính đặc thù cho người Việt nữa! :D
Ta đã trở lại và quên hết tất cả! :D

Hình đại diện của người dùng
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Bài viết: 432
Ngày tham gia: T.Bảy 07/08/2010 9:24 am
Đến từ: Ở dưới đó đó
Has thanked: 6 time
Been thanked: 18 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi nimgiaminh » T.Hai 08/11/2010 4:16 pm

Anh ơi, em copy đoạn code của anh vào trong thì nó chỉ hiện lên màn hình màu đen vài giây rồi biến mất. Nó có câu lệnh nào giống như writeln của C không anh???

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Hai 08/11/2010 5:37 pm

@lungocqua:
Thành thật xin lỗi. Do tôi liên kết với trang SourceForge nên ban đầu dùng tiếng Anh làm ngôn ngữ chung cho bạn hữu các nước dễ coi. Tôi sẽ bổ sung Việt Ngữ trong vài ngày nữa.
Nhưng tài liệu đi kèm IDE thì hiện vẫn là tiếng Việt và viết đầy đủ hơn nhiều. Bạn có thể tham khảo trong đó.
Tôi cũng muốn làm một bộ .NET Việt Nam lắm. Nhưng năng lực bản thân vẫn chưa cho phép. Đành cố gắng thêm một thời gian nữa.
@nimgiaminh:
Bạn có thể đặt hàm reads() ở cuối (tất nhiên là vẫn trong phạm vi hàm main()) để chương trình tạm dừng. Hàm này tương tự Console.ReadLine() của .NET hoặc gets() của C. Còn hàm puts() chức năng giống như Console.WriteLine().

Hình đại diện của người dùng
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Bài viết: 432
Ngày tham gia: T.Bảy 07/08/2010 9:24 am
Đến từ: Ở dưới đó đó
Has thanked: 6 time
Been thanked: 18 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi nimgiaminh » T.Hai 08/11/2010 7:10 pm

Ngôn ngữ này hay và cũng dễ sử dụng quá anh hen, anh có tập các hàm trong ngôn ngữ này không anh??

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Ba 09/11/2010 7:24 pm

@nimgiaminh:
Cảm ơn bạn. Hai tập tin PDF đính kèm bộ IDE có ghi đầy đủ các hàm nội bộ cũng như hàm thư viện của ILYC.

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Ba 09/11/2010 7:50 pm

19g50 GMT+7 09/11/2010
Cập nhật mã nguồn và bản biên dịch mới nhất.
Xin mời theo đường liên kết ở bài đầu tiên để tải về.

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 944
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 64 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi NoBi » T.Tư 10/11/2010 3:25 pm

Trước đây khi mới làm quen với lập trình mình vẫn còn nhớ được dạy là hàm sẽ trả về giá trị, còn thủ tục không trả về giá trị. Nhưng sau này lại thấy tất cả đều dùng Function hết, chỉ thêm void để nhận dạng. Theo ý mình nếu bỏ void, dùng tách biệt thành 2 từ khóa (Procedure và Function chẳng hạn) thì sẽ dể hiểu hơn.
:>

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 104 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi vuathongtin » T.Tư 10/11/2010 3:28 pm

Nhưng sau này lại thấy tất cả đều dùng Function hết

Trong PHP cũng đâu có sử dụng khái niệm thủ tục nữa, thực thi hay trả trị toàn dùng Function hết. Đây là điểm khá hay trong PHP
Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 10/11/2010 7:07 pm

Theo ý mình thì đúng là Function có thể thay thế hoàn toàn Procedure được! Vì vậy, có Procedure hay không cũng không quan trọng lắm!

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 944
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 64 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi NoBi » T.Năm 11/11/2010 9:57 am

Chúng ta nên đề cập tới mục đích của chương trình này là để làm gì (đọc bài viết đầu). Từ đó phát triển theo định hướng đó. Chứ kg phải để phân bua, so sánh với những ct khác. Làm sao mà theo được người ta?!.
:>

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Năm 11/11/2010 1:53 pm

Cảm ơn anh NoBi, anh vuathongtin và bạn Đạt đã góp ý.

Việc đồng nhất thủ tục và hàm là để cho tiến trình thực hiện chương trình dịch được thuận tiện hơn, vì không cần phải định nghĩa hai kiểu dữ liệu khác nhau (cho dù là kế thừa từ một kiểu). Song chuyện này đã được giải quyết trong bản đặc tả 0.2 của ngôn ngữ ILYC. Trong bản đặc tả mới, sẽ có một cái syntactic sugar (cú pháp thuận tiện) là thay vì ghi function void thì chỉ cần ghi procedure là được.

Nhưng dù có hoàn trị hay không thì tựu trung cũng là phương thức (method). ILYC 0.2 sẽ có phương thức tĩnh và phương thức cho thực thể (instance).

ILYC phiên bản 0.2 sẽ ra mắt trong thời gian sớm nhất.

kedatinh233
Thành viên chính thức
Thành viên chính thức
Bài viết: 17
Ngày tham gia: T.Ba 23/12/2008 9:26 am

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi kedatinh233 » T.Năm 09/12/2010 5:47 pm

đã là ngôn ngữ lập trình việt sao không dùng tiếng việt vậy. ví dụ

Mã: Chọn hết

nếu a>b thì
viết  a & " là số lớn hơn"
ktnếu

code như vậy chẳng hạn, như thế học sinh cấp 1 có thể cũng lập trình được

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi vo_minhdat2007 » T.Năm 09/12/2010 6:33 pm

Chuyện đó thì không khó, chỉ cần bạn Nhật Anh chỉnh các từ khoá là được, nhưng phát sinh 2 vấn đề:

1/ VD như chữ Until, bạn dịch thế nào?
2/ Phải gõ dấu tiếng Việt trong nhiều trường hợp khá bất tiện, mà đã làm thì không nên làm không dấu.

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Ngôn ngữ lập trình ILYC 0.2

Gửi bàigửi bởi alexanderdna » CN 26/12/2010 11:09 am

Hôm nay, 26-12-2010, phát hành phiên bản ILYC 0.2.
Xin xem bài viết đầu tiên để biết thêm chi tiết.

Về vấn đề tài liệu:
Hai tài liệu chính cho ILYC là Bản Đặc Tả và Tài Liệu Tra Cứu có phiên bản Việt Ngữ.
Còn tài liệu tra cứu các thư viện vẫn còn là phiên bản Anh Ngữ, do tác giả chưa có thời gian biên soạn. Mong quý vị thông cảm.

Hình đại diện của người dùng
alexanderdna
Guru
Guru
Bài viết: 214
Ngày tham gia: T.Ba 14/07/2009 11:13 am
Đến từ: Sài Gòn
Has thanked: 3 time
Been thanked: 15 time

Re: Ngôn ngữ lập trình ILYC

Gửi bàigửi bởi alexanderdna » T.Hai 27/12/2010 11:03 am

Một số mã lệnh minh họa các tính năng mới trong phiên bản 0.2:

Cấu trúc:
  1. structure Khi
  2.     int Tuoi
  3.     float CanNang
  4.     string BietDanh
  5.  
  6.     function Khi(int tuoi, float canNang, bietDanh) do
  7.         this.Tuoi = tuoi
  8.         this.CanNang = canNang
  9.         this.BietDanh = bietDanh
  10.     done
  11.  
  12.     procedure NhayTungTung() do
  13.         puts("Cà tưng!")
  14.         puts("Cà tưng!")
  15.     done
  16.  
  17.     function int BatChi(Khi conKhi) do
  18.         int soChi
  19.  
  20.         soChi = conKhi.Tuoi / 2
  21.  
  22.         return soChi
  23.     done
  24. done
  25.  
  26. procedure main() do
  27.     Khi khiKho = new Khi(10, 6.0, "Con Khỉ Khô")
  28.     Khi khiHo = new Khi(5, 3.4, "Con Khỉ Họ")
  29.  
  30.     int chi = khiKho.BatChi(khiHo)
  31.     if chi > 10 then
  32.         khiHo.NhayTungTung()
  33. done
  34.  


Mảng thực sự, có thể chứa mảng, phần tử của mảng giờ đây có thể truyền vào hàm theo tham chiếu:
  1. procedure main() do
  2.     # Ấn định kích thước
  3.     int[10] a1
  4.  
  5.     # Tạo lập trực tiếp từng phần tử
  6.     int[] a2 = new int[] {1, 2, 3}
  7.  
  8.     # Ký pháp đoạn
  9.     int[] a3 = [1, 10]
  10.  
  11.     # Truyền phần tử theo tham chiếu (v0.1 không làm được)
  12.     swap(a2[0], a2[2])
  13.  
  14.     # Phương thức Join ghép các phần tử thành chuỗi
  15.     puts(a2.Join(" | "))
  16.  
  17.     # Trường Length cho biết kích thước
  18.     for i from a3.Length - 1 downto 0 loop
  19.         print(a3[i] + " ")
  20.  
  21.     # Toán tử + ở đây là ghép mảng
  22.     a1 = a3 + a2
  23.  
  24.     # Mảng chứa mảng (có thể đến vô số cấp)
  25.     float[3][] a4
  26.     a4[0] = new float[10]
  27.     a4[1] = new float[] {0, 3.2, 6.459}
  28.     a4[2] = a4[1] + 1.0 #thêm phần tử
  29.  
  30.     # Thay đổi trường Length
  31.     a1.Length = 5 #ngắt bớt
  32.     a2.Length = 5 #kéo dài, lấy a2[0] để nhân bản
  33.  
  34.     # Toán tử in (tìm kiếm tuyến tính)
  35.     if 6 in a3 then puts("Tìm thấy 6 trong a3")
  36.  
  37.     # Phương thức tách chuỗi Split
  38.     string[] strArr = "Cau lac bo VB".Split(" ")
  39.  
  40.     # Một trò hay ho:
  41.     string str = "Cau #lac# bo V#B"
  42.     str = str.Split("#").Join("") #xóa hết các chuỗi "#"
  43. done
  44.  
  45. procedure swap(ref int a, ref int b) do
  46.     int tmp = a
  47.     a = b
  48.     b = tmp
  49. done
  50.  


Phát biểu switch:
[text]procedure main() do
puts("Xin hỏi quý danh: ")
string name = reads()

switch name
case "Bill":
puts("Chào ông Gates")
case "Steve": do
puts("Ông là Ballmer?")
puts("Hay là Jobs?")
puts("Hay là Wozniak?")
done
case "NoBi", "Trí":
puts("Chào Đàn Chủ!")
default:
puts("Chào bạn!")
done
done
[/text]

Toán tử gán:
[text]procedure main() do
int i
if ((i -< toint(reads())) = 10) then
puts("Vừa nhập 10")
done
[/text]

Biến lỗi trong try..catch:
[text]procedure main() do
try
print(1 / 0)
catch (e) do
puts("Lỗi số " + e.Code)
puts("Mô tả: " + e.Message)
done
done
[/text]
Sửa lần cuối bởi alexanderdna vào ngày T.Sáu 14/01/2011 12:26 pm với 1 lần sửa.


Quay về “Công cụ - Tiện ích”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách