دارت

لە ئینسایکڵۆپیدیای ئازادی ویکیپیدیاوە

دارت (بە ئینگلیزی: Dart) زمانێکی پڕۆگرامسازییە بەکاردەبرێت لە دروستکردنی نەرمەواڵا بۆ سیستەمە کارپێکەرە جیاوازەکان. زمانەکە لەلایەن گووگڵەوە گەشەی پێدراوە و لە دروستکردنی نەرمەواڵای مۆبایل و دێسکتۆپ و، سێرڤەر و وێبسایتەکاندا بەکاردەبرێت، لەو کۆتایانەدا بە ڤێرژنی نوێ بەردەست بوو کە توانرا لەگەڵ چەندەها سیستەمی تر بیگونجێنن کە بتوانی بە یەک جار نەرمەواڵا بۆ سەرجەم ئەو سیستەمە زیادکراوانە دروست بکەی لە ئێستادا یەکێکە لە زمانە پێشکەوتووەکان و بەناوبانگەکان.

دارت زمانێکی class-based و object-oriented و garbage-collection'ەوە کۆدەکانی ئەم زمانە ھاوشێوازن لەگەڵ زمانی C'دا. دارت دەتوانێت لە ھەمان کاتدا کۆدەکان وەربگێڕێت (کۆمپایل بکات) بۆ کۆدی مەکینە یان جاڤاسکریپت. ئەم زمانە پاڵپشتی لە interfaces, mixins, abstract classes, reified generics دەکات لەھەمان کاتدا type inference'یش.

مێژوو[دەستکاری]

دارت لە ١٠–١٢ی مانگی ١٠ی ساڵی ٢٠١١ لە وڵاتی دانیمارک لە شاری ئۆرھوس ڕاگەیەندرا. پڕۆژەکە لەلایەن لارس باک و کاسپەر لەند'ەوە ھێندرایە بوون و، یەکەمین وەشانیش کە لێی بڵاوبویەوە لە ١٤ی ١١ی ساڵی ٢٠١٣ بوو.

لەسەرەتادا دارت تەنھا لە توانایدا ھەبوو کەوا گەشە بە نەرمەواڵاکانی ئەندرۆید و ئای ئۆ ئێس بدات، بەڵام پاش ڕاگەیاندنی وەشانی ٢٫٦'ی دارت و ڕاگەیاندنی پێوەکراوی dart2native ھاوشانی وەشانە نوێیەکە، لەوە بەدواوە گەشەپێدەران دەیانتوانی زمانەکە بەکاربەرن بۆ گەشەپێدانی نەرمەواڵا بۆ سیستەمە کارپێکەرەکانی (macOS و Windows و Linux).

بەکارھێنان[دەستکاری]

چوار ڕێگە ھەیە بۆ بەکارخستنی کۆدەکانی دارت:

وەرگێڕانی بۆ جاڤاسکریپت

دارت پشت بە Source-to-source compiler دەبەستێت بۆ گۆڕینی سەرچاوەی کۆدەکانی بۆ جاڤاسکریپت. Source-to-source compilerیش وەرگێڕێکە کە لەتوانایدا ھەیە زمانە Higher Levelەکان بگۆڕێت بۆ Lower Levelەکان، نموونەی ئەو وەرگێڕانانەش (سەرچاوەی کۆدی زمانی دارت بۆ جاڤاسکریپت، یاخود سەرچاوەی کۆدی زمانی پایسۆن بۆ جاڤاسکریپت). و بەمجۆرەش پاش وەرگێڕانی کۆدەکانی بۆ جاڤاسکریپت دەتواندرێت لەسەر وێبگەڕەکان بەکاربخرێن.

Stand-alone

کەرەستەی گەشەپێدانی نەرمەواڵای دارت (SDK) ھەڵگری مەکینەیەکی خەیاڵییە (stand-alone Dart VM) کە دەرفەتی ئەوەی بۆ زمانەکە ڕەخساندووە کە لەڕێگەی کۆماندێکی کۆماند-لاین'ەوە کۆدەکان بەکارببرێن؛ و بەھۆی ئەوەی زۆرینەی گەشەپێدانی زمانەکە بەخودی دارت خۆی بووە گرنگترین بەش یاخود یەکێک لە بەشە گرنگەکانی کە بوونیان ھەیە لە SDKەکەدا مەکینە خەیاڵییەکەیە stand-alone Dart VM.

Ahead-of-time compiled

Native

نموونە[دەستکاری]

نموونەی سڵاو، جیھان!

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

فەنکشنێک بۆ ھەژمارکردنی Fibonacci number'ی ژمارە n

int fib(int n) => (n > 2) ? (fib(n - 1) + fib(n - 2)) : 1;
// A Fibonacci function implementation with a conditional operator in Dart
// This code is read as:
//  given an integer n,
//  if n > 2, return fib(n - 1) + fib(n - 2);
//  otherwise, return the integer 1 as result

void main() {
  print('fib(20) = ${fib(20)}');
}

نموونەی کڵاسێکی سادە:

// Import the math library to get access to the sqrt function.
// Imported with `math` as name, so accesses need to use `math.` as prefix.
import 'dart:math' as math;

// Create a class for Point.
class Point {

  // Final variables cannot be changed once they are assigned.
  // Declare two instance variables.
  final num x, y;

  // A constructor, with syntactic sugar for setting instance variables.
  // The constructor has two mandatory parameters.
  Point(this.x, this.y);

  // A named constructor with an initializer list.
  Point.origin()
      : x = 0,
        y = 0;

  // A method.
  num distanceTo(Point other) {
    var dx = x - other.x;
    var dy = y - other.y;
    return math.sqrt(dx * dx + dy * dy);
  }

  // Example of a "getter".
  // Acts the same as a final variable, but is computed on each access.
  num get magnitude => math.sqrt(x * x + y * y);

  // Example of operator overloading
  Point operator +(Point other) => Point(x + other.x, y + other.y);
  // When you instantiate a class such as Point in Dart 2+, new is
  // an optional word
}

// All Dart programs start with main().
void main() {
  // Instantiate point objects.
  var p1 = Point(10, 10);
  print(p1.magnitude);
  var p2 = Point.origin();
  var distance = p1.distanceTo(p2);
  print(distance);
}

سەرچاوەکان[دەستکاری]

بەستەرە دەرەکییەکان[دەستکاری]