Dart เป็นภาษาการเขียนโปรแกรมทั่วไปที่พัฒนาโดย Google ซึ่งออกแบบมาเพื่อสร้างแอปพลิเคชันเว็บ เซิร์ฟเวอร์ เดสก์ท็อป และมือถือ Dart เน้นวิธีการเขียนโปรแกรมที่มีโครงสร้าง โดยมีฟีเจอร์ที่สนับสนุนทั้งการคอมไพล์แบบทันที (JIT) และการคอมไพล์ล่วงหน้า (AOT) ทำให้มีประสิทธิภาพทั้งในสภาพแวดล้อมการพัฒนาและการผลิต ไวยากรณ์ที่ทันสมัยและฟีเจอร์การทำงานพร้อมกัน เช่น การเขียนโปรแกรมแบบอะซิงโครนัสด้วย Futures และ Streams ทำให้ Dart เป็นที่นิยมโดยเฉพาะในการพัฒนาอินเทอร์เฟซผู้ใช้ด้วย Flutter framework ซึ่งช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่คอมไพล์แบบเนทีฟได้
Dart ถูกเปิดตัวครั้งแรกในปี 2011 เป็นภาษาที่มุ่งหวังที่จะปรับปรุง JavaScript โดยเฉพาะสำหรับแอปพลิเคชันเว็บ ภาษาได้รับการออกแบบมาเพื่อตอบสนองต่อปัญหาที่พบใน JavaScript เช่น การมีประเภทข้อมูลที่เปลี่ยนแปลงได้และประสิทธิภาพในแอปพลิเคชันขนาดใหญ่ ไวยากรณ์ของ Dart คล้ายกับภาษาต่างๆ เช่น Java และ C# ทำให้ค่อนข้างง่ายสำหรับนักพัฒนาที่คุ้นเคยกับภาษานี้ในการนำไปใช้
การออกแบบของ Dart ได้รับอิทธิพลจากภาษาการเขียนโปรแกรมหลายภาษา รวมถึง Java, JavaScript, C# และ Swift มันมีความสัมพันธ์ที่แน่นแฟ้นกับ Flutter framework ซึ่งเป็นหนึ่งในการพัฒนาที่สำคัญที่สุดในระบบนิเวศของ Dart การเปิดตัว Flutter ในปี 2017 ในฐานะเครื่องมือ UI สำหรับมือถือข้ามแพลตฟอร์มได้เพิ่มความนิยมให้กับ Dart นำไปสู่การเพิ่มขึ้นในการนำไปใช้ในการพัฒนาแอปพลิเคชันมือถือ
ณ ปี 2023 Dart ยังคงพัฒนาอย่างต่อเนื่องด้วยการอัปเดตเป็นประจำ มันได้รับความนิยมไม่เพียงแต่สำหรับแอปพลิเคชันมือถือผ่าน Flutter แต่ยังสำหรับการพัฒนาเว็บด้วยเฟรมเวิร์กเช่น AngularDart ชุมชนรอบๆ Dart ก็เติบโตขึ้นเช่นกัน โดยได้รับการสนับสนุนจาก Google และแหล่งข้อมูล บทเรียน และไลบรารีจากบุคคลที่สามต่างๆ
Dart สนับสนุนการมีประเภทข้อมูลที่เข้มงวด ซึ่งหมายความว่าประเภทของตัวแปรจะถูกตรวจสอบในระหว่างการคอมไพล์ แต่ยังมีการอนุมานประเภท ซึ่งช่วยให้คอมไพเลอร์สามารถอนุมานประเภทได้
var name = "Dart"; // ประเภทถูกอนุมานเป็น String
String greeting = "Hello, $name";
Dart มีการสนับสนุนการเขียนโปรแกรมแบบอะซิงโครนัสในตัวผ่าน async
และ await
ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่ไม่บล็อกได้อย่างง่ายดาย
Future<String> fetchData() async {
return await Future.delayed(Duration(seconds: 2), () => 'Data fetched');
}
Dart ได้นำเสนอความปลอดภัยของ Null ที่มีเสียง ซึ่งช่วยป้องกันข้อผิดพลาดการอ้างอิง Null โดยการแยกแยะระหว่างประเภทที่สามารถเป็น Null และประเภทที่ไม่สามารถเป็น Null
String? nullableName; // สามารถเป็น null
String nonNullableName = "Non-Nullable"; // ไม่สามารถเป็น null
Dart อนุญาตให้ใช้ mixins ซึ่งช่วยให้คลาสสามารถสืบทอดการใช้งานจากหลายแหล่งได้
mixin CanRun {
void run() {
print('Running');
}
}
class Animal with CanRun {}
เมธอดขยายช่วยให้นักพัฒนาสามารถเพิ่มฟังก์ชันใหม่ให้กับไลบรารีหรือคลาสที่มีอยู่โดยไม่ต้องแก้ไขพวกเขา
extension StringExtensions on String {
bool get isEmptyOrNull => this == null || this.isEmpty;
}
Dart อนุญาตให้ใช้คอนสตรัคเตอร์แบบ Factory ที่สามารถคืนค่าตัวอย่างของคลาสหรือซับคลาส ซึ่งให้ความยืดหยุ่นในกระบวนการสร้างวัตถุ
class Point {
final num x, y;
Point(this.x, this.y);
factory Point.origin() {
return Point(0, 0);
}
}
Dart สนับสนุนการจัดกลุ่ม ซึ่งช่วยให้นักพัฒนาสามารถกำหนดชุดค่าคงที่ที่จำกัดได้
enum Color { red, green, blue }
Dart อนุญาตให้กำหนดเมธอดและคุณสมบัติแบบ Static ในคลาส ซึ่งสามารถเข้าถึงได้โดยไม่ต้องสร้างตัวอย่างของคลาส
class MathUtils {
static int add(int a, int b) => a + b;
}
Generics ช่วยให้สามารถสร้างคลาส เมธอด และอินเทอร์เฟซที่ทำงานกับประเภทข้อมูลใดๆ
class Box<T> {
T value;
Box(this.value);
}
Dart สนับสนุนพารามิเตอร์ที่เลือกได้ทั้งแบบตำแหน่งและแบบชื่อ ทำให้ลายเซ็นของฟังก์ชันมีความยืดหยุ่นมากขึ้น
void greet(String name, [String title = 'Mr.']) {
print('Hello, $title $name');
}
Dart ใช้ Dart SDK เป็นหลักและสามารถพัฒนาได้โดยใช้ IDEs ที่หลากหลาย IDE ที่ได้รับความนิยมสำหรับ Dart ได้แก่:
Dart SDK รวมเครื่องมือบรรทัดคำสั่ง dart
ซึ่งสามารถใช้ในการสร้าง รัน และสร้างแอปพลิเคชัน Dart โปรเจกต์ทั่วไปสามารถเริ่มต้นได้โดยใช้:
dart create my_project
ในการรันแอปพลิเคชัน Dart สามารถใช้คำสั่งต่อไปนี้:
dart run
Dart มักถูกใช้สำหรับ:
Dart มีประเภทข้อมูลแบบคงที่และมีไวยากรณ์ที่มีโครงสร้างมากกว่าเมื่อเปรียบเทียบกับธรรมชาติที่เปลี่ยนแปลงได้และอิงโปรโตไทป์ของ JavaScript ความปลอดภัยของประเภทใน Dart สามารถช่วยในแอปพลิเคชันขนาดใหญ่ ในขณะที่ความยืดหยุ่นของ JavaScript เสนอการสร้างต้นแบบอย่างรวดเร็ว
Dart และ C# มีองค์ประกอบทางไวยากรณ์ที่คล้ายกัน แต่ระบบนิเวศของ Dart มุ่งเน้นไปที่การพัฒนาฝั่งหน้าโดยใช้ Flutter ในขณะที่ C# ถูกใช้กันอย่างแพร่หลายในแอปพลิเคชันองค์กรและบริการฝั่งหลังด้วยเฟรมเวิร์กเช่น ASP.NET
ทั้งสองภาษามีไวยากรณ์และหลักการเชิงวัตถุที่คล้ายกัน อย่างไรก็ตาม การมุ่งเน้นของ Dart ในแนวทางการพัฒนาที่ทันสมัย โดยเฉพาะการเขียนโปรแกรมแบบอะซิงโครนัสและเฟรมเวิร์กที่เน้น UI เช่น Flutter ทำให้มันมีข้อได้เปรียบในแอปพลิเคชันมือถือและเว็บเมื่อเปรียบเทียบกับ Java
ในขณะที่ Python เป็นที่นิยมอย่างมากสำหรับการวิจัยข้อมูลและการเขียนโปรแกรมทั่วไป Dart มีความมุ่งเน้นเฉพาะในด้านการพัฒนาแอปพลิเคชันมือถือและเว็บ ข้อได้เปรียบด้านประสิทธิภาพของ Dart เนื่องจากการคอมไพล์ AOT อาจนำไปสู่การทำงานที่เร็วกว่าเมื่อเปรียบเทียบกับธรรมชาติที่ถูกตีความของ Python
ทั้ง Dart และ Go ถูกออกแบบมาเพื่อการเขียนโปรแกรมที่ยืดหยุ่นและมีประสิทธิภาพ อย่างไรก็ตาม Dart โดดเด่นในด้านการพัฒนา UI ด้วย Flutter ในขณะที่ Go เป็นที่นิยมสำหรับระบบฝั่งหลังและไมโครเซอร์วิสเนื่องจากโมเดลการทำงานพร้อมกันและความเรียบง่าย
ในการแปลโค้ด Dart ไปยังภาษาอื่นๆ ให้พิจารณาเครื่องมือที่มีอยู่ เช่น dart2js สำหรับการแปลง Dart เป็น JavaScript หรือ Dart's Fiddle สำหรับการทดสอบโค้ดที่สามารถแนะนำการแปลได้ สำหรับการแปลไปยังภาษาเช่น Java หรือ C# ให้มองหาสร้างภาษาที่ตรงกับฟีเจอร์ของ Dart อย่างใกล้ชิด โดยเฉพาะในโครงสร้างเชิงวัตถุ การดำเนินการแบบอะซิงโครนัส และคอลเลกชัน
เครื่องมือเช่น DartPad ยังช่วยในการทดสอบและทำความเข้าใจชิ้นส่วนของโค้ด Dart ซึ่งสามารถเปรียบเทียบและจับคู่กับฟังก์ชันการทำงานของภาษาโปรแกรมอื่นๆ ได้ แม้ว่าจะไม่มีเครื่องมือแปลจากแหล่งข้อมูลสู่แหล่งข้อมูลที่เป็นสากลสำหรับ Dart แต่ไลบรารีและเฟรมเวิร์กเฉพาะสามารถช่วยในการปรับโค้ด Dart ให้ทำงานในสภาพแวดล้อมหรือแพลตฟอร์มที่แตกต่างกัน เช่น การแปลงเป็น Node.js หรือการรวมเข้ากับระบบ C# ที่มีอยู่