อ่าน 15 นาที
ดาร์ท (ภาษาโปรแกรม)
Dartเป็นภาษาโปรแกรมที่ออกแบบโดยLars Bakและ Kasper Lund และพัฒนาโดยGoogle สามารถใช้ในการพัฒนาเว็บและแอปพลิเคชันมือถือรวมถึง แอป พลิเคชันเซิร์ฟเวอร์และเดสก์ท็อป ได้
ดาร์ท (ภาษาโปรแกรม)
| โผ | |
|---|---|
| กระบวนทัศน์ | รูปแบบหลายแบบ : ฟังก์ชัน , คำสั่ง , เชิงวัตถุ , การสะท้อน[ 1 ] |
| ออกแบบโดย | ลาร์ส บัค , แคสเปอร์ ลุนด์ |
| นักพัฒนา | |
| ปรากฏครั้งแรก | 10 ตุลาคม 2554 [ 2 ] |
| เวอร์ชันเสถียร | 3.12.2 [ 3 ] |
| วินัยในการพิมพ์ | 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 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 ]
แผ่นรองลูกดอก

เพื่อให้การเริ่มต้นใช้งาน 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.
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- แผ่นรองลูกดอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ดาร์ท (ภาษาโปรแกรม)
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 มาพร้อมกับ ไลบรารีมาตรฐาน ที่สมบูรณ์...