Rust เป็นภาษาโปรแกรมภาษาใหม่ที่พัฒนาโดย Mozilla โดยมุ่งเป้าว่าต้องการเป็นภาษาสำหรับงานประมวลผลที่ทำงานพร้อมๆ กัน (concurrency) และทำงานบนระบบขนาดใหญ่ ออกแบบมาไม่ให้มีปัญหาด้านหน่วยความจำอย่าง buffer overflow
การใช้งานจะเป็นระบบคอมไพล์ ตัว syntax ของภาษาจะคล้ายกับ C/C++ คือเป็นภาษาที่ใช้วงเล็บปีกกา {} และประกาศตัวแปรแบบ static
ตอนนี้สถานะของ Rust ยังเป็นเวอร์ชัน 0.1 รุ่นทดสอบ ความสามารถและประสิทธิภาพยังไม่สมบูรณ์มากนัก ตัวซอร์สโค้ดของเครื่องมือต่างๆ เปิดเป็นโอเพนซอร์สด้วยสัญญาอนุญาตแบบ MIT (โค้ดอยู่บน GitHub)
ตัวอย่างโค้ดในภาษา Rust
use std;
import std::io;
fn main() {
for i in [1, 2, 3] {
io::println(#fmt("hello %d\n", i));
}
}
คุณสมบัติอื่นๆ ของภาษา Rust ก็ขอยกมาจากเว็บต้นทางเลยนะครับ
- Compilation model batch, ahead-of-time, C/C++ compatible
- Type system static, structural-algebraic, with metadata
- Type inference yes, only local variables
- Generic types yes, only simple, non-turing-complete substitution
- Concurrency isolated tasks, message passing
- Unique pointers move semantics, no races or sharing
- Memory safety no buffer overflow, use before init, NULL or free()
- Immutability immutable by default, mutability is the special case
- Garbage collection optional, per-task, only "shared" types
- Error handling isolated tasks, unrecoverable unwinding
- Text utf8 strings, ucs4 characters
- Tier 1 platforms Linux, OSX, Windows
- Developers Mozilla
- License MIT
เป้าหมายสุดท้ายของ Rust คือเป็นภาษาที่มาแทน C++ ของฝั่ง Mozilla และในอนาคตเราอาจได้เห็นโค้ดบางส่วนของ Firefox ถูกแปลงเป็น Rust แทน C++
ที่มา - ExtremeTech
on
มี <br> ด้วย อิอิ
caznova Thu, 26/01/2012 - 16:49
มี <br> ด้วย อิอิ
มันย่อซะจนแอบงงนะเนี่ย fn เอง
neizod Thu, 26/01/2012 - 16:56
มันย่อซะจนแอบงงนะเนี่ย fn เอง fmt เอย
มันจะไม่ได้มาเป็น C/C++
mr_tawan Thu, 26/01/2012 - 18:42
In reply to มันย่อซะจนแอบงงนะเนี่ย fn เอง by neizod
มันจะไม่ได้มาเป็น C/C++ ก็เพราะว่าภาษามันอ่านยากนี่ล่ะ
ชื่อไม่เป็นมงคลเลย Rust ->
nolykk Thu, 26/01/2012 - 17:09
ชื่อไม่เป็นมงคลเลย Rust -> ถูกทิ้งให้สนิมขึ้น ??
ฮาๆครับ
ดีนะที่ไม่ใช่
multiplex Thu, 26/01/2012 - 17:15
ดีนะที่ไม่ใช่ io::prtln(#fmt("hello %d\n", i));
ดีนะที่ไม่ใช่
arth Thu, 26/01/2012 - 17:23
In reply to ดีนะที่ไม่ใช่ by multiplex
ดีนะที่ไม่ใช่ io::prtln(#fmt("hlo %d\n", i));
ดีนะที่ไม่ใช่
HudchewMan Fri, 27/01/2012 - 02:12
In reply to ดีนะที่ไม่ใช่ by arth
ดีนะที่ไม่ใช่ io::ptl(#fmt("hl %d\n", i));
จะเพิ่มภาษาอะไรกันมาอีกเยอะแย
IceDagger Thu, 26/01/2012 - 18:24
จะเพิ่มภาษาอะไรกันมาอีกเยอะแยะใช้ syntax แบบ C/C++ ที่มีอยู่แล้วมันลำบากมากหรือไงนะ แทนที่จะเอาเวลาไป improve C++ compiler ยังจะดีซะกว่า เบื่อพวกโปรแกรมเมอร์ก้อตรงนี้แหละ ไม่อยากเห็นศาสดาภาษาโปรแกรมมิ่งเพิ่มแล้ว เบื่อ - -
ตัวเลือกเยอะย่อมดีกว่า
narate Thu, 26/01/2012 - 21:19
In reply to จะเพิ่มภาษาอะไรกันมาอีกเยอะแย by IceDagger
ตัวเลือกเยอะย่อมดีกว่า เขาไม่ได้บังคับใช้น่ะ
ก็ C++
Thaina Thu, 26/01/2012 - 21:29
In reply to จะเพิ่มภาษาอะไรกันมาอีกเยอะแย by IceDagger
ก็ C++ มันยุ่งยากไร้สาระเกินความจำเป็นน่ะครับ และบางทีก็ไม่เหมาะกับบางงาน
แถมไลบรารี่เก่าๆก็รกไปหมด Legacy ขยะก็มีเพียบ ไล่โค้ดก็ยาก
C++0x ก็พยายามแก้ แต่ก็ได้แค่นั้น
แต่ผมว่าเพราะความยุ่งยากนั่นแ
oAOEo Mon, 30/01/2012 - 08:55
In reply to ก็ C++ by Thaina
แต่ผมว่าเพราะความยุ่งยากนั่นแหละทำให้มันยืนหยัดอยู่จนทุกวันนี้
เหมือน C/C++
wrongite Thu, 26/01/2012 - 22:02
เหมือน C/C++ แต่เห็นแล้วคิดถึง Python นิดๆ
ทำให้มันใช้ integrate กับ
prophecyx Fri, 27/01/2012 - 11:06
ทำให้มันใช้ integrate กับ C/C++ compiler ด้วยนะ จะได้นัวแบบ Objective-C
มีตัวอย่างแบบที่ได้อานิสงส์จา
ultimateohm Fri, 27/01/2012 - 21:22
มีตัวอย่างแบบที่ได้อานิสงส์จากการประมวลแบบขนาน เช่น bitonic sort ไหมครับ แล้วมันได้ประโยชน์จาก GPGPU ด้วยไหม
int a[256]; void bitonicSort(int lo, int cnt, int dir) { int k; if (cnt >1) { k=cnt/2; bitonicSort(lo, k, (1 >0)); bitonicSort(lo+k, k, (0 >1)); bitonicMerge(lo, cnt, dir); } } void bitonicMerge(int lo, int cnt, int dir) { int k,i; if (cnt >1) { k=cnt/2; for (i=lo; i< lo+k; i++) swapifneed(i, i+k, dir); bitonicMerge(lo, k, dir); bitonicMerge(lo+k, k, dir); } } void swapifneed(int i, int j, int dir) { int h; if (dir==(a[i] >a[j])) { h=a[i]; a[i]=a[j]; a[j]=h; } }ตรงที่เป็นบรรทัดเดียว แต่มีมากกว่า 1 statement คือ ทำขนานกันได้
ดูมีประโยชน์
GooEng Sat, 28/01/2012 - 00:14
In reply to มีตัวอย่างแบบที่ได้อานิสงส์จา by ultimateohm
ดูมีประโยชน์ แต่ต้องใช้สมาธิเวลาอ่าน ไม่งั้นจะงงว่า statement เดียวกัน เวลาตาลาย
Rust มันแตก tasks
ultimateohm Sun, 29/01/2012 - 15:34
Rust มันแตก tasks แบบนี้หรืิอเปล่า และมี Ports and channels ทำหน้าที่คล้ายๆ IPC
Rust version 0.2 มาแล้ว
ultimateohm Fri, 30/03/2012 - 22:00
Rust version 0.2 มาแล้ว