• 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

Moderator: Điều hành

Forum rules
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]
User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Wed 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/
Last edited by alexanderdna on Fri 14/01/2011 12:18 pm, edited 7 times in total.



User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Fri 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

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Sat 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.

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Sun 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.

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Mon 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ố:
[text]procedure main() do
print("a = ")
int a = toint(reads())
print("b = ")
int b = toint(reads())

int c = add(a, b)
puts("a + b = " + c)
done

function int add(int a, int b) do
return a + b
done[/text]

Sắp xếp kiểu nổi bọt:
[text]function void bubbleSort(ref int[] a) do
int tmp
int swapped = 1
while swapped loop do
swapped = 0
for i from 0 to sizeof(a) - 1 loop
if a[i] > a[i + 1] then do
tmp = a[i]
a[i] = a[i + 1]
a[i + 1] = tmp
swapped = 1
done
done
done[/text]

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]
Last edited by alexanderdna on Sun 26/12/2010 11:07 am, edited 1 time in total.

User avatar
lungocqua
Guru
Guru
Posts: 1225
Joined: Tue 18/08/2009 11:51 am
Location: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 times
Contact:

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

Postby lungocqua » Mon 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

User avatar
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Posts: 432
Joined: Sat 07/08/2010 9:24 am
Location: Ở dưới đó đó
Has thanked: 6 times
Been thanked: 18 times
Contact:

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

Postby nimgiaminh » Mon 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???

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Mon 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().

User avatar
nimgiaminh
Thành viên danh dự
Thành viên danh dự
Posts: 432
Joined: Sat 07/08/2010 9:24 am
Location: Ở dưới đó đó
Has thanked: 6 times
Been thanked: 18 times
Contact:

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

Postby nimgiaminh » Mon 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??

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Tue 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.

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Tue 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ề.

User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 57 times
Been thanked: 67 times
Contact:

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

Postby NoBi » Wed 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.
:>

User avatar
vuathongtin
Điều hành viên
Điều hành viên
Posts: 1028
Joined: Sun 02/05/2010 10:03 pm
Location: Xứ sở DG
Has thanked: 2 times
Been thanked: 105 times
Contact:

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

Postby vuathongtin » Wed 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
* Chuyên gia MMO
congtacvien.online

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Wed 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!

User avatar
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 57 times
Been thanked: 67 times
Contact:

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

Postby NoBi » Thu 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?!.
:>

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Thu 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
Posts: 19
Joined: Tue 23/12/2008 9:26 am
Location: https://vankhannom.info
Contact:

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

Postby kedatinh233 » Thu 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ụ

Code: Select all

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

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Thu 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.

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Sun 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.

User avatar
alexanderdna
Guru
Guru
Posts: 214
Joined: Tue 14/07/2009 11:13 am
Location: Sài Gòn
Has thanked: 3 times
Been thanked: 15 times

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

Postby alexanderdna » Mon 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:
[text]procedure main() do
# Ấn định kích thước
int[10] a1

# Tạo lập trực tiếp từng phần tử
int[] a2 = new int[] {1, 2, 3}

# Ký pháp đoạn
int[] a3 = [1, 10]

# Truyền phần tử theo tham chiếu (v0.1 không làm được)
swap(a2[0], a2[2])

# Phương thức Join ghép các phần tử thành chuỗi
puts(a2.Join(" | "))

# Trường Length cho biết kích thước
for i from a3.Length - 1 downto 0 loop
print(a3[i] + " ")

# Toán tử + ở đây là ghép mảng
a1 = a3 + a2

# Mảng chứa mảng (có thể đến vô số cấp)
float[3][] a4
a4[0] = new float[10]
a4[1] = new float[] {0, 3.2, 6.459}
a4[2] = a4[1] + 1.0 #thêm phần tử

# Thay đổi trường Length
a1.Length = 5 #ngắt bớt
a2.Length = 5 #kéo dài, lấy a2[0] để nhân bản

# Toán tử in (tìm kiếm tuyến tính)
if 6 in a3 then puts("Tìm thấy 6 trong a3")

# Phương thức tách chuỗi Split
string[] strArr = "Cau lac bo VB".Split(" ")

# Một trò hay ho:
string str = "Cau #lac# bo V#B"
str = str.Split("#").Join("") #xóa hết các chuỗi "#"
done

procedure swap(ref int a, ref int b) do
int tmp = a
a = b
b = tmp
done
[/text]

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]
Last edited by alexanderdna on Fri 14/01/2011 12:26 pm, edited 1 time in total.


Return to “Công cụ - Tiện ích”

Who is online

Users browsing this forum: No registered users and 4 guests