กลับไปหน้าบทความ

อ่าน 15 นาที

ดาร์ท (ภาษาโปรแกรม)

Dartเป็นภาษาโปรแกรมที่ออกแบบโดยLars Bakและ Kasper Lund และพัฒนาโดยGoogle สามารถใช้ในการพัฒนาเว็บและแอปพลิเคชันมือถือรวมถึง แอป พลิเคชันเซิร์ฟเวอร์และเดสก์ท็อป ได้

ดาร์ท (ภาษาโปรแกรม)

โผ
กระบวนทัศน์รูปแบบหลายแบบ : ฟังก์ชัน , คำสั่ง , เชิงวัตถุ , การสะท้อน[ 1 ]
ออกแบบโดยลาร์ส บัค , แคสเปอร์ ลุนด์
นักพัฒนาGoogle
ปรากฏครั้งแรก10 ตุลาคม 2554 [ 2 ] ( 10 ตุลาคม 2011 )
เวอร์ชันเสถียร
3.12.2 [ 3 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 9 มิถุนายน 2026 ( 9 มิถุนายน 2026 )
วินัยในการพิมพ์1.x: ตัวเลือก 2.x: อนุมาน[ 4 ] ( static , strong )
แพลตฟอร์มข้ามแพลตฟอร์ม
โอเอสข้ามแพลตฟอร์ม
ใบอนุญาตบีเอสดี
นามสกุลไฟล์.โผ
เว็บไซต์ดาร์ท . เดฟ
การนำไปใช้งานหลักๆ
Dart VM, dart2native, dart2js, DDC, Flutter
ได้รับอิทธิพลจาก
C , C++ , C# , Erlang , Java , JavaScript , Ruby , Swift , Smalltalk , Strongtalk , [ 5 ] TypeScript [ 6 ]

Dartเป็นภาษาโปรแกรมที่ออกแบบโดยLars Bakและ Kasper Lund และพัฒนาโดยGoogle [ 8 ]สามารถใช้ในการพัฒนาเว็บและแอปพลิเคชันมือถือรวมถึง แอป พลิเคชันเซิร์ฟเวอร์และเดสก์ท็อป ได้

Dart เป็นภาษาเชิงวัตถุแบบคลาสที่มีการเก็บขยะและมีไวยากรณ์แบบ C [ 9 ] สามารถคอมไพล์เป็นรหัสเครื่อง JavaScript หรือ WebAssembly ได้รองรับอินเทร์เฟมิกซ์อินคลาสแบบนามธรรมเจเนริกแบบ reified และการอนุมานประเภท[ 4 ]เวอร์ชันล่าสุดของ Dart คือ3.12.2 [ 3 ] แก้ไขข้อมูลนี้บนวิกิดาต้า

ประวัติศาสตร์

Dart เปิดตัวในงานประชุม GOTO ที่เมืองอาร์ฮุสประเทศเดนมาร์ก ระหว่างวันที่ 10-12 ตุลาคม 2554 [ 10 ] Lars Bakและ Kasper Lund เป็นผู้ก่อตั้งโครงการ[ 11 ] Dart 1.0 เปิดตัวเมื่อวันที่ 14 พฤศจิกายน 2556 [ 12 ]

ในตอนแรก Dart ได้รับการตอบรับที่หลากหลาย บางคนวิจารณ์โครงการ Dart ว่าทำให้เว็บแตกแยกเนื่องจากแผนการที่จะรวม Dart VM ไว้ ในChromeแผนดังกล่าวถูกยกเลิกในปี 2015 พร้อมกับการเปิดตัว Dart 1.9 โดยเปลี่ยนมาเน้นที่การคอมไพล์โค้ด Dart เป็น JavaScript แทน[ 13 ]

Dart 2.0 เปิดตัวในเดือนสิงหาคม 2018 พร้อมกับการเปลี่ยนแปลงภาษา รวมถึงระบบประเภท[ 14 ]

ในเดือนพฤศจิกายน 2019 Dart 2.6 ได้แนะนำส่วนขยายใหม่dart2nativeซึ่งขยายการคอมไพล์แบบเนทีฟไปยังแพลตฟอร์มเดสก์ท็อป Linux, macOS และ Windows [ 15 ]ก่อนหน้านี้ นักพัฒนาสามารถสร้างเครื่องมือใหม่ได้โดยใช้อุปกรณ์ Android หรือ iOS เท่านั้น ด้วยส่วนขยายนี้ นักพัฒนาสามารถปรับใช้โปรแกรมเป็นไฟล์ปฏิบัติการแบบครบวงในตัวเองได้ ไม่จำเป็นต้องติดตั้ง Dart SDK เพื่อเรียกใช้ไฟล์ปฏิบัติการแบบครบวงในตัวเองเหล่านี้[ 16 ]ชุด เครื่องมือ Flutterได้รวม Dart ไว้ด้วย ดังนั้นจึงสามารถคอมไพล์บนบริการขนาดเล็ก เช่น การสนับสนุนแบ็กเอนด์ได้[ 17 ] [ 18 ]

Dart 3.0 เปิดตัวในเดือนพฤษภาคม 2023 [ 19 ]โดยมีการเปลี่ยนแปลงระบบประเภทเพื่อให้ต้องมีความปลอดภัยของค่าว่างที่ถูกต้อง การเปิดตัวครั้งนี้มีคุณสมบัติใหม่ๆ เช่น เรคอร์ด รูปแบบ[ 20 ]และตัวแก้ไขคลาส[ 21 ]

Dart สามารถคอมไพล์เป็นWebAssembly ได้ ตั้งแต่เวอร์ชัน 3.4 [ 22 ]

ข้อกำหนด

Dart ได้เผยแพร่ข้อกำหนดภาษาฉบับที่ 5 เมื่อวันที่ 9 เมษายน 2021 [ 23 ]ซึ่งครอบคลุมไวยากรณ์ทั้งหมดจนถึง Dart 2.10 ร่างฉบับที่ 6 ประกอบด้วยไวยากรณ์ทั้งหมดจนถึง 2.13 [ 24 ]ข้อเสนอที่ได้รับการยอมรับสำหรับข้อกำหนดและร่างคุณสมบัติที่เป็นไปได้สามารถพบได้ในที่เก็บภาษา Dart บน GitHub [ 25 ]

ECMA Internationalได้จัดตั้งคณะกรรมการทางเทคนิค TC52 [ 26 ]เพื่อกำหนดมาตรฐาน Dart ECMA ได้อนุมัติข้อกำหนดภาษา Dart ฉบับแรกเป็น ECMA-408 [ 27 ]ในเดือนกรกฎาคม 2014 ในการประชุมใหญ่ครั้งที่ 107 [ 28 ]ฉบับต่อมาได้รับการอนุมัติในเดือนธันวาคม 2014 [ 29 ]มิถุนายน 2015 และธันวาคม 2015 [ 27 ]

การติดตั้งแอปพลิเคชัน

ชุดพัฒนาซอฟต์แวร์ Dart (SDK) มาพร้อมกับรันไทม์ Dart แบบสแตนด์อโลน ซึ่งช่วยให้โค้ด Dart สามารถทำงานใน สภาพแวดล้อม อินเทอร์เฟซบรรทัดคำสั่งได้ SDK ประกอบด้วยเครื่องมือสำหรับคอมไพล์และแพ็กเกจแอป Dart [ 30 ] Dart มาพร้อมกับไลบรารีมาตรฐาน ที่สมบูรณ์ ทำให้ผู้ใช้สามารถเขียนแอปพลิเคชันระบบที่ใช้งานได้อย่างสมบูรณ์ เช่น เว็บเซิร์ฟเวอร์แบบกำหนดเอง[ 31 ]

นักพัฒนาสามารถปรับใช้แอปพลิเคชัน Dart ได้ 6 วิธี:

วิธีการปรับใช้ Dart
ประเภทการปรับใช้ แพลตฟอร์มเป้าหมาย เฉพาะ แพลตฟอร์มต้องใช้Dart VM ความเร็ว ในการคอมไพล์ความเร็ว ในการประมวลผล
โค้ด JavaScript เบราว์เซอร์ เลขที่ เลขที่ ช้า เร็ว
เว็บแอสเซมบลี[ 22 ] [ 32 ]เบราว์เซอร์ เลขที่ เลขที่ ช้า เร็ว
ไฟล์ปฏิบัติการแบบครบวงในตัวเอง macOS, Windows, Linux ใช่ เลขที่ ช้า เร็ว
โมดูลล่วงหน้า macOS, Windows, Linux ใช่ เลขที่ ช้า เร็ว
โมดูลแบบทันเวลาพอดี macOS, Windows, Linux ใช่ ใช่ เร็ว ช้า
โมดูลแบบพกพา macOS, Windows, Linux เลขที่ ใช่ เร็ว ช้า

การปรับใช้บนเว็บ

Dart 3 สามารถใช้งานแอปพลิเคชันบนเว็บได้ทั้งในรูปแบบ JavaScript หรือ WebAssembly โดย Dart รองรับการคอมไพล์เป็น WebAssembly ตั้งแต่เดือนพฤษภาคม 2024

โค้ด JavaScript

ในการทำงานบนเว็บเบราว์เซอร์ หลัก Dart อาศัยคอมไพเลอร์แบบซอร์สโค้ดเป็นซอร์สโค้ดสำหรับJavaScriptทำให้แอป Dart เข้ากันได้กับเบราว์เซอร์หลักทั้งหมด Dart ปรับปรุงเอาต์พุต JavaScript ที่คอมไพล์แล้วเพื่อหลีกเลี่ยงการตรวจสอบและการดำเนินการที่สิ้นเปลือง ส่งผลให้โค้ด JavaScript สามารถทำงานได้เร็วกว่าโค้ดที่เทียบเท่ากันซึ่งเขียนด้วยมือใน JavaScript ธรรมดา[ 33 ]

คอมไพเลอร์ตัวแรกที่แปลง Dart เป็น JavaScript คือdartcซึ่งถูกยกเลิกการใช้งานใน Dart เวอร์ชัน 2.0

คอมไพเลอร์ Dart-to-JavaScript ตัวที่สองคือ frog [ 34 ]เขียนด้วยภาษา Dart เปิดตัวในปี 2013 และเลิกใช้ในปี 2020 ไม่ควรสับสนกับ Dart Frog ซึ่งเป็นเฟรมเวิร์ก Dart แบบโอเพนซอร์สสำหรับการสร้างระบบแบ็กเอนด์จากVery Good Ventures [ 35 ]

คอมไพเลอร์ Dart-to-JavaScript ตัวที่สามคือdart2js. เปิดตัวใน Dart 2.0 [ 36 ] คอมไพเลอร์ ที่ใช้ Dart ได้รับ การพัฒนามาจากคอมไพเลอร์รุ่นก่อนหน้า มีจุดประสงค์เพื่อนำข้อกำหนดและความหมายของภาษา Dart มาใช้ให้สมบูรณ์ นักพัฒนาใช้คอมไพเลอร์นี้สำหรับการสร้างเวอร์ชันใช้งานจริง โดยจะคอมไพ ล์ dart2jsเป็นJavaScript ที่ถูกย่อขนาด

คอมไพเลอร์ Dart-to-JavaScript ตัวที่สี่คือdartdevc[ 37 ] นักพัฒนาสามารถใช้คอมไพเลอร์นี้สำหรับการสร้างเพื่อการพัฒนาได้ โดยจะคอมไพล์เป็น JavaScript ที่มนุษย์อ่านได้ ในวันที่ 28 มีนาคม 2013 ทีม Dart ได้โพสต์การอัปเดตบนบล็อกของพวกเขาเกี่ยวกับโค้ด Dart ที่คอมไพล์เป็น JavaScript ด้วยdart2jsคอมไพเลอร์[ 38 ]โดยระบุว่าขณะนี้ทำงานได้เร็วกว่า JavaScript ที่เขียนด้วยมือบนเอ็นจิ้น JavaScript V8 ของ Chromeสำหรับเกณฑ์มาตรฐาน DeltaBlue [ 39 ]

ก่อน Dart 2.18 ทั้งdart2jsและdartdevcสามารถเรียกใช้ได้จากบรรทัดคำสั่ง Dart 2.18 ได้รวมฟังก์ชันเหล่านี้เข้าไว้ใน Dart SDK แล้ว ซึ่งทำให้การเรียกใช้โดยตรงจากบรรทัดคำสั่งหายไป แต่ยังคงมีคอมไพเลอร์สองตัวอยู่webdev serveคำสั่ง จะเรียกใช้dartdevcคอมไพเลอร์webdev buildคำสั่ง จะเรียกใช้dart2jsคอมไพเลอร์

Dart SDK คอมไพล์เป็น JavaScript ได้สองวิธี

ในการดีบักโค้ด ให้รันคำสั่งwebdev serveเพื่อคอมไพล์ไฟล์ JavaScript ขนาดใหญ่ที่มีโค้ดที่อ่านง่าย JavaScript ที่สร้างโดย Dart สามารถดีบักได้โดยใช้Chromeเท่านั้น

$ cd <dart_app_directory> $ webdev ให้บริการ [--debug] [-o <target.js>] 

ในการสร้างแอปพลิเคชันสำหรับใช้งานจริง ให้รันคำสั่งwebdev buildเพื่อคอมไพล์ไฟล์ JavaScript ที่ย่อขนาดแล้ว

$ cd <dart_app_directory> $ webdev build [-o <target.js>] 

เว็บแอสเซมบลี

ด้วยการเปิดตัว Dart 3.22 Google ได้ประกาศการสนับสนุนการคอมไพล์โค้ด Dart เป็นWebAssembly [ 22 ] การสนับสนุนWasm อย่างเต็มรูปแบบ จำเป็นต้องมีการนำคุณสมบัติ WasmGC [ 40 ]มาใช้ในมาตรฐาน Wasm Chrome 119 [ 41 ]รองรับ WasmGC Firefox [ 42 ] 120 และเวอร์ชันที่ใหม่กว่าอาจรองรับ WasmGC ได้ แต่บั๊กในปัจจุบันกำลังขัดขวางความเข้ากันได้[ 43 ] Safari [ 44 ]และMicrosoft Edgeกำลังรวมการสนับสนุน WasmGC เข้าไว้ด้วยกัน

การปรับใช้บนแพลตฟอร์มดั้งเดิม

ภาษา Dart สามารถคอมไพล์เป็นโค้ดเครื่องจักรแบบเนทีฟสำหรับ macOS, Windows และ Linux ในรูปแบบเครื่องมือบรรทัดคำสั่งได้ นอกจากนี้ Dart ยังสามารถคอมไพล์แอปพลิเคชันที่มีส่วนติดต่อผู้ใช้สำหรับเว็บ, iOS, Android, macOS, Windows และ Linux โดยใช้เฟรมเวิร์ก Flutter ได้อีกด้วย

ไฟล์ปฏิบัติการแบบครบวงในตัวเอง

ไฟล์ปฏิบัติการแบบครบวงในตัวเองประกอบด้วยโค้ดเครื่องจักรแบบเนทีฟที่คอมไพล์จากไฟล์โค้ด Dart ที่ระบุไว้ รวมถึงส่วนประกอบที่จำเป็น และรันไทม์ Dart ขนาดเล็ก รันไทม์จะจัดการการตรวจสอบประเภทและการเก็บขยะ คอมไพเลอร์จะสร้างเอาต์พุตที่เฉพาะเจาะจงกับสถาปัตยกรรมที่นักพัฒนาใช้ในการคอมไพล์ ไฟล์นี้สามารถแจกจ่ายได้เหมือนกับไฟล์ปฏิบัติการแบบเนทีฟอื่นๆ

$ dart compile exe "source.dart" -o "target_app" Generated: <target_app> $ ./target_app 

โมดูลล่วงหน้า

เมื่อคอมไพล์ล่วงหน้า [ 45 ] โค้ด Dart จะสร้างโมดูลที่มีประสิทธิภาพและเฉพาะแพลตฟอร์ม ซึ่งรวมถึงไลบรารีและแพ็กเก ที่แอปต้องการทั้งหมด ซึ่งจะทำให้เวลาในการคอมไพล์เพิ่มขึ้น คอมไพเลอร์จะส่งออกแอปที่เฉพาะเจาะจงกับสถาปัตยกรรมที่คอมไพล์

$ dart compile aot-snapshot "source.dart" Generated <target_app.aot> $ dartaotruntime "target_app.aot"

โมดูลแบบทันเวลาพอดี

เมื่อคอมไพล์แบบ Just-in-Time (JIT ) โค้ด Dart จะสร้างโมดูลที่มีประสิทธิภาพและคอมไพล์ได้รวดเร็ว โมดูลนี้ต้องการ Dart VM ที่รวมอยู่ใน SDK เพื่อใช้งาน คอมไพเลอร์จะโหลดคลาสที่ถูกแยกวิเคราะห์และโค้ดที่คอมไพล์แล้วทั้งหมดลงในหน่วยความจำในครั้งแรกที่แอปทำงาน ซึ่งจะช่วยเพิ่มความเร็วในการทำงานของแอปในครั้งต่อๆ ไป คอมไพเลอร์จะสร้างแอปที่เฉพาะเจาะจงกับสถาปัตยกรรมที่ใช้ในการคอมไพล์

$ dart compile jit-snapshot "source.dart" กำลังคอมไพล์ <source.dart> เป็นไฟล์ jit-snapshot <target_app.jit> สวัสดีโลก! $ dart run "target_app.jit" สวัสดีโลก!

โมดูลเคอร์เนล Dart

เมื่อคอมไพล์เป็นโมดูลเคอร์เนล โค้ด Dart จะสร้างรูปแบบที่ไม่ขึ้นกับเครื่องใดเครื่องหนึ่ง เรียกว่า Dart Intermediate Representation (Dart IR) รูปแบบไบต์โค้ด Dart IR สามารถทำงานได้บนสถาปัตยกรรมใดๆ ก็ตามที่มี Dart VM ทำให้รูปแบบนี้พกพาสะดวกและคอมไพล์ได้รวดเร็ว แต่ประสิทธิภาพอาจด้อยกว่าเอาต์พุตการคอมไพล์แบบอื่นๆ

$ dart compile kernel "source.dart" กำลังคอมไพล์ <source.dart> เป็นไฟล์เคอร์เนล <target_app.dill> $ dart run "target_app.dill"

ความพร้อมกัน

เพื่อให้เกิดการทำงานพร้อมกัน Dart ใช้เวิร์กเกอร์ที่แยกจากกันและเป็นอิสระซึ่งไม่ใช้หน่วยความจำร่วมกัน แต่ใช้การส่งข้อความ[ 46 ]คล้ายกับ กระบวนการ Erlang (ดูโมเดลแอคเตอร์ ด้วย ) ทุกโปรแกรม Dart ใช้ไอโซเลตอย่างน้อยหนึ่งตัว ซึ่งเป็นไอโซเลตหลัก ตั้งแต่ Dart 2 เป็นต้นมา แพลตฟอร์มเว็บ Dart ไม่รองรับไอโซเลตอีกต่อไป และแนะนำให้นักพัฒนาใช้Web Workersแทน[ 47 ]

ความปลอดภัยเป็นศูนย์

ตั้งแต่ Dart 2.12 เป็นต้นไป Dart ได้นำระบบความปลอดภัยของค่าว่าง (null safety ) มาใช้ [ 48 ]ซึ่งทำหน้าที่เป็นหลักประกันว่าตัวแปรจะไม่สามารถส่งคืนค่าว่างได้ เว้นแต่จะได้รับอนุญาตอย่างชัดเจน ระบบความปลอดภัยของค่าว่างช่วยป้องกันไม่ให้นักพัฒนาสร้างข้อผิดพลาด null-pointer exception ซึ่งเป็นข้อผิดพลาดทั่วไป แต่ยากต่อการแก้ไขข้อผิดพลาด ใน Dart 3.0 โค้ดทั้งหมดต้องปฏิบัติตามระบบความปลอดภัยของค่าว่าง

การจัดเก็บข้อมูล

ไฟล์สแนปช็อต ซึ่งเป็นส่วนสำคัญของ Dart VM จะจัดเก็บอ็อบเจ็กต์และข้อมูลรันไทม์อื่นๆ[ 46 ]

ภาพรวมสคริปต์
โปรแกรมที่เขียนด้วยภาษา Dart สามารถคอมไพล์เป็นไฟล์สแนปช็อตที่มีโค้ดโปรแกรมและส่วนประกอบที่จำเป็นทั้งหมด ซึ่งได้รับการเตรียมการวิเคราะห์และพร้อมสำหรับการทำงาน ทำให้สามารถเริ่มต้นการทำงานได้อย่างรวดเร็ว
ภาพถ่ายเต็ม
ไลบรารีหลักของ Dart สามารถคอมไพล์เป็นไฟล์สแนปช็อตซึ่งช่วยให้โหลดไลบรารีได้อย่างรวดเร็ว โดยปกติแล้ว การแจกจ่ายมาตรฐานส่วนใหญ่ของ Dart VM หลักจะมีสแนปช็อตที่สร้างไว้ล่วงหน้าสำหรับไลบรารีหลักซึ่งจะถูกโหลดในระหว่างการทำงาน
สแนปช็อตของวัตถุ
Dart ใช้สแนปช็อตเพื่อแปลงข้อความที่ส่งผ่านระหว่างไอโซเลตเป็นอนุกรม เนื่องจากเป็น ภาษาแบบอะซิ งโครนัส อย่างมาก Dart จึงใช้ไอโซเลตสำหรับการทำงานพร้อมกัน [ 49 ] อ็อบเจ็กต์สร้างสแนปช็อตถ่ายโอนไปยังไอโซเลตอื่น จากนั้นไอโซเลตจะแปลงสแนปช็อตเป็นอนุกรม

บรรณาธิการ

เมื่อวันที่ 18 พฤศจิกายน 2011 Google ได้เปิดตัวDart Editorซึ่งเป็นโปรแกรมโอเพนซอร์สที่ใช้ ส่วนประกอบ ของEclipseสำหรับระบบปฏิบัติการmacOS , WindowsและLinux [ 50 ]ตัวแก้ไขนี้รองรับการเน้นไวยากรณ์การเติมโค้ดอัตโนมัติ การคอมไพล์ JavaScript การเรียกใช้แอปพลิเค ชันDart บนเว็บและเซิร์ฟเวอร์ และการดีบัก

เมื่อวันที่ 13 สิงหาคม 2555 Google ประกาศเปิดตัวปลั๊กอิน Eclipse สำหรับการพัฒนา Dart [ 51 ]

เมื่อวันที่ 18 เมษายน 2558 Google ได้ยกเลิก Dart Editor และหันมาใช้JetBrains integrated development environment (IDE) แทน [ 52 ] Android Studio , IntelliJ IDEA , PyCharm , PhpStormและWebStormรองรับปลั๊กอิน Dart [ 53 ]ปลั๊กอินนี้รองรับคุณสมบัติมากมาย เช่น การเน้นไวยากรณ์ การเติมโค้ดอัตโนมัติ การวิเคราะห์ การปรับโครงสร้างใหม่ การดีบัก และอื่นๆ อีกมากมาย โปรแกรมแก้ไขอื่นๆ ยังมีปลั๊กอินสำหรับ Dart [ 54 ]รวมถึง Sublime Text [ 55 ] Atom [ 56 ] Emacs [ 57 ] Vim [ 58 ] และ Visual Studio Code [ 59 ]

Chrome Dev Editor

ในปี 2013 ทีม Chromium เริ่มพัฒนาสภาพแวดล้อมการพัฒนาแบบโอเพนซอร์ส ที่ใช้ Chrome Appโดยมีไลบรารีวิดเจ็ต GUI ที่นำกลับมาใช้ใหม่ได้ ซึ่งมีชื่อรหัสว่า Spark [ 60 ]ต่อมาโครงการนี้ได้รับการเปลี่ยนชื่อเป็น Chrome Dev Editor [ 61 ]สร้างขึ้นด้วยภาษา Dart โดยมี Spark ซึ่งขับเคลื่อนด้วย Polymer [ 62 ]

ในเดือนมิถุนายน พ.ศ. 2558 Google ได้โอนโครงการ CDE ไปยัง GitHub ในฐานะโครงการซอฟต์แวร์ฟรี และยุติการลงทุนใน CDE อย่างจริงจัง[ 63 ]โครงการ Chrome Dev Editor ถูกเก็บถาวรเมื่อวันที่ 24 เมษายน พ.ศ. 2564 [ 64 ]

แผ่นรองลูกดอก

ภาพหน้าจอ DartPad

เพื่อให้การเริ่มต้นใช้งาน Dart ง่ายขึ้น ทีม Dart จึงสร้างDartPad ขึ้น เมื่อต้นปี 2015 IDE ออนไลน์ นี้ ช่วยให้นักพัฒนาสามารถทดลองใช้ API ของแอปพลิเคชัน Dart และรันโค้ด Dart ได้ โดยมีฟังก์ชันต่างๆ เช่น การเน้นไวยากรณ์ การวิเคราะห์โค้ด การเติมโค้ดอัตโนมัติ เอกสารประกอบ และการแก้ไข HTML และ CSS [ 65 ]

เครื่องมือพัฒนา

Dart DevTools ซึ่งเขียนด้วยภาษา Dart [ 66 ]เป็นชุดเครื่องมือสำหรับการดีบักโค้ดและเพิ่มประสิทธิภาพ

ฟลัตเตอร์

Google เปิดตัวFlutterสำหรับการพัฒนาแอปเนทีฟ Flutter สร้างขึ้นโดยใช้ Dart, C, C++ และSkiaเป็นเฟรมเวิร์ก UI แอปแบบโอเพนซอร์สและหลายแพลตฟอร์ม ก่อน Flutter 2.0 นักพัฒนาสามารถกำหนดเป้าหมายได้เฉพาะAndroid , iOSและเว็บเท่านั้น Flutter 2.0 เปิดตัวการสนับสนุนสำหรับ macOS, Linux และ Windows เป็นฟีเจอร์เบต้า[ 67 ] Flutter 2.10 เปิดตัวพร้อมการสนับสนุนการผลิตสำหรับWindows [ 68 ]และ Flutter 3 เปิดตัวการสนับสนุนการผลิตสำหรับแพลตฟอร์มเดสก์ท็อปทั้งหมด[ 69 ]มันมีเฟรมเวิร์ก วิดเจ็ต และเครื่องมือ เฟรมเวิร์กนี้ช่วยให้นักพัฒนาสามารถสร้างและปรับใช้แอปมือถือ เดสก์ท็อป และเว็บได้[ 70 ] Flutter ทำงานร่วมกับFirebase [ 71 ]และรองรับการขยายเฟรมเวิร์กผ่านส่วนเสริมที่เรียกว่าแพ็กเกจ ซึ่งสามารถพบได้ในที่เก็บแพ็กเกจ pub.dev [ 72 ] JetBrains ยังรองรับปลั๊กอิน Flutter อีกด้วย[ 73 ]

ตัวอย่าง

ตัวอย่างข้อความ " สวัสดีโลก!" :

void main () { print ( 'Hello, World!' ); }

ลูป for แบบง่าย: [ 74 ]

void main () { for ( int i = 1 ; i <= 10 ; i ++ ) { print ( i ); } }

ฟังก์ชันสำหรับคำนวณเลขฟิโบนาชชี ลำดับที่ n :

void main () { int i = 20 ; print ( 'fibonacci( $ i ) = ${ fibonacci ( i ) } ' ); }/// คำนวณเลขฟิโบนาชชีลำดับที่n int fibonacci ( int n ) { return n < 2 ? n : ( fibonacci ( n - 1 ) + fibonacci ( n - 2 )); }

คลาสที่เรียบง่าย:

// นำเข้าไลบรารีคณิตศาสตร์เพื่อเข้าถึงฟังก์ชัน sqrt // นำเข้าโดยใช้ชื่อ `math` ดังนั้นการเข้าถึงต้องใช้ `math.` เป็นคำนำหน้าimport 'dart:math' as ​​math ;// สร้างคลาสสำหรับ Point class Point {// ตัวแปร final ไม่สามารถเปลี่ยนแปลงได้หลังจากกำหนดค่าแล้ว// ประกาศตัวแปรอินสแตนซ์สองตัวfinal num x , y ;// คอนสตรัคเตอร์ที่มีไวยากรณ์แบบย่อสำหรับการตั้งค่าตัวแปรอินสแตนซ์// คอนสตรัคเตอร์มีพารามิเตอร์บังคับสองตัวPoint ( this . x , this . y );// คอนสตรัคเตอร์ที่มีชื่อพร้อมลิสต์เริ่มต้นPoint.origin ( ) : x = 0 , y = 0 ;// เมธอดnum distanceTo ( Point other ) { num dx = x - other . x ; num dy = y - other . y ; return math . sqrt ( dx * dx + dy * dy ); } // ตัวอย่างของ "getter" // ทำงานเหมือนกับตัวแปร final แต่จะถูกคำนวณทุกครั้งที่เข้าถึงnum get magnitude => math . sqrt ( x * x + y * y );// ตัวอย่างการโอเวอร์โหลดตัวดำเนินการPoint operator + ( Point other ) => Point ( x + other . x , y + other . y ); // เมื่อสร้างอินสแตนซ์ของคลาส เช่น Point ใน Dart 2+ คำว่า new เป็นคำที่ไม่จำเป็น}// โปรแกรม Dart ทุกโปรแกรมเริ่มต้นด้วย main() void main () { // สร้างอ็อบเจ็กต์จุดPoint p1 = Point ( 10 , 10 ); print ( p1 . magnitude ); Point p2 = Point . origin (); num distance = p1 . distanceTo ( p2 ); print ( distance ); }

อิทธิพลจากภาษาอื่นๆ

Dart เป็นส่วนหนึ่งของตระกูลภาษาALGOL [ 75 ]สมาชิกในตระกูลนี้ได้แก่ C, Java, C#, JavaScript และอื่นๆ

ไวยากรณ์ การ เรียงลำดับวิธีได้รับการนำมาใช้จาก Smalltalk [ 76 ]ไวยากรณ์นี้ช่วยให้สามารถเรียกใช้วิธีหลายวิธีทีละวิธีบนวัตถุเดียวกันได้

มิกซ์อินของ Dart ได้รับอิทธิพลจากStrongtalk [ 77 ] [ 78 ]และRuby

Dart ใช้ isolates เป็นหน่วยการทำงานพร้อมกันและความปลอดภัยเมื่อจัดโครงสร้างแอปพลิเคชัน[ 79 ]แนวคิด Isolate สร้างขึ้นจากโมเดล Actorที่นำมาใช้ใน Erlang [ 80 ]

ในเอกสารปี 2547 Gilad Bracha (ซึ่งเป็นสมาชิกของทีม Dart) และDavid Ungarได้เสนอ Mirror API เป็นครั้งแรกสำหรับการดำเนินการสะท้อนที่ควบคุมได้และปลอดภัย[ 81 ]แนวคิดนี้ได้รับการนำไปใช้ครั้งแรกใน Self

ดูเพิ่มเติม

  • Google Web Toolkit
  • TypeScriptเป็นภาษาโปรแกรมที่มีการกำหนดประเภทข้อมูลอย่างเข้มงวด ซึ่งแปลงเป็น JavaScript
  • Flutterคือชุดเครื่องมือพัฒนาซอฟต์แวร์ UI แบบโอเพนซอร์สสำหรับแอปพลิเคชันข้ามแพลตฟอร์ม

บรรณานุกรม

  • วอลราธ, แคธี่; แลดด์, เซธ (7 มีนาคม 2012). ดาร์ทคืออะไร? (ฉบับพิมพ์ครั้งที่ 1). โอไรลีย์ มีเดีย . หน้า 20. ISBN 978-14493-32327.
  • วอลราธ, แคธี่; แลดด์, เซธ (7 พฤศจิกายน 2012). ดาร์ท: พร้อมลุย (ฉบับพิมพ์ครั้งที่ 1). โอไรลีย์ มีเดีย . หน้า 144. ISBN 978-1449330897.
  • บัคเก็ตต์, คริส (28 ธันวาคม 2012). Dart in Action (ฉบับพิมพ์ครั้งที่ 1). สำนักพิมพ์แมนนิง . หน้า 475. ISBN 978-1617290862.
  • เว็บไซต์อย่างเป็นทางการ
  • แผ่นรองลูกดอก
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Dart_(programming_language)&oldid=1357238515 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ดาร์ท (ภาษาโปรแกรม)

Dartเป็นภาษาโปรแกรมที่ออกแบบโดยLars Bakและ Kasper Lund และพัฒนาโดยGoogle สามารถใช้ในการพัฒนาเว็บและแอปพลิเคชันมือถือรวมถึง แอป พลิเคชันเซิร์ฟเวอร์และเดสก์ท็อป ได้

ประวัติศาสตร์

Dart เปิดตัวในงานประชุม GOTO ที่ เมืองอาร์ฮุส ประเทศเดนมาร์ก ระหว่างวันที่ 10-12 ตุลาคม 2554 [ 10 ] Lars Bak และ Kasper Lund เป็นผู้ก่อตั้งโครงการ [ 11 ] Dart 1.0 เปิดตัวเมื่อวันที่ 14 พฤศจิกายน 2556 [ 12 ]

ข้อกำหนด

Dart ได้เผยแพร่ข้อกำหนดภาษาฉบับที่ 5 เมื่อวันที่ 9 เมษายน 2021 [ 23 ] ซึ่งครอบคลุมไวยากรณ์ทั้งหมดจนถึง Dart 2.10 ร่างฉบับที่ 6 ประกอบด้วยไวยากรณ์ทั้งหมดจนถึง 2.

การติดตั้งแอปพลิเคชัน

ชุดพัฒนาซอฟต์แวร์ Dart (SDK) มาพร้อมกับรันไทม์ Dart แบบสแตนด์อโลน ซึ่งช่วยให้โค้ด Dart สามารถทำงานใน สภาพแวดล้อม อินเทอร์เฟซบรรทัดคำสั่งได้ SDK ประกอบด้วยเครื่องมือสำหรับคอมไพล์และ แพ็ก เกจแอป Dart [ 30 ] Dart มาพร้อมกับ ไลบรารีมาตรฐาน ที่สมบูรณ์...