abshammeri

Dart ، لغة برمجة جديدة من Google

36 ردود في هذا الموضوع

Google ستعلن عن لغة برمجية جديدة في مؤتمر GOTO القادم ( في October ) ، حسب ما يتضح من الوصف أنها موجهة لتطبيقات الويب ، اللغة وصفها بثلاث كلمات حتى الآن :

a new programming language for structured web programming

هل ستنجح اللغة ، أم ستستخدمها Google فقط كما هو الحال مع Go ؟

المصدر الأساسي ، تيدوز أيضاً

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
هل ستنجح اللغة ، أم ستستخدمها Google فقط كما هو الحال مع Go ؟

لا أعتقد أن Go ناضجة الآن, تحتاج على الأقل من خمس إلى سبع سنوات حتى نرى تأثيرها الحقيقي. هل اللغات التي يستعملها المبرمجون اليوم صممت البارحة؟ أما أجمل رد فهو في slashdot :lol:

standards.png

4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جوجل لم تنجح حتي الان فى مجال صناعة لغات البرمجة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

نحتاج لغة لتطبيقات الويب من جانب الكلاينت و ممكن ايضا من جانب السيرفر ..

و متفاءل بجوجل :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اللغة صدرت اليوم, و فيها ميزات جميلة:

http://www.dartlang.org/

4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم.. كنت أنتظر صدور اللغة منذ أول مرة سمعت عنها بفارغ الصبر.

اللغة عكس ما توقعت Client-side!!!

طبعًا كان الجميع يتساءلون عن كيفية تشغيل و دعم هذه اللغة، و فرضها في حال كانت تحتاج من دعم خاص من المتصفح و ما إلى ذلك. العجيب فعلًا - و هو ما لم يخطر على بال الكثيرين - أن Google اهتمت كثيرًا بهذه النقطة، و استخدمت حلًا لعل الكثيرين يتعجبون منه. لم أقرأ الكثير، لكن ما فهمته أن لغة Dart تتحول عبر Compiler إلى الكود المطابق في JavaScript! و هذا الأمر هو ما اتبعته في لغة منشئ المواقع في توقيعي، و لنفس السبب، أي دعم تشغيل و تطوير اللغة بسهولة، و لكن الفكرة عندما نفذتها لم تلق إلا الرفض التام، بل و قيل لي من الكثيرين أنها ليست لغة، و تعليلهم لذلك أنها تعتمد على ترجمة الكود من لغة High-level إلى لغة High-level فحسب! رغم أن هذا يسمى Translator أو Transcompiler (و أحيانًا يسمى Compiler بشكل عادي)، و أن هناك لغات شهيرة تعتمد على هذه الطريقة، أولها Pascal و من ضمنها CoffeeScript..

يمكن تنفيذ كود Dart بطريقة من ثلاث حسب الموقع الرسمي:

  1. الترجمة إلى JavaScript
  2. التنفيذ المباشرة عبر VM على الخادم! (كيف بالضبط؟ - أم المقصود هو الترجمة عبر الـServer إلى JavaScript؟!)
  3. طريقة ثالثة لتنفيذ البرامج الصغيرة مباشرة من المتصفح...

شكرًا..

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً خالد .. يا أخي خبر من ألماس ..

هذه اللغة التي ستنقل الويب لبعد جديد ،أخيراً تخلصنا من JS ، من زمان يا Google ! فيها كل ما أحلم به ، لم أستطع إكمال قراءة المواصفات ، فالفرحة غامرة جداً ، أحتاج أن أهدأ و أركز وأكفف دموع الفرح ، و أستخدمها ..

يا سلام ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اتوقع انها نسخة معدلة من الجافا اكثر من الجافا سكربت!

لكن بشكل عام المواصفات و طريقة كتابة اللغة جميلة , لكن بحاجة الى بعض المراجعات ( حسب النظرة الاولية ) .

لكن الفكرة عندما نفذتها لم تلق إلا الرفض التام، بل و قيل لي من الكثيرين أنها ليست لغة، و تعليلهم لذلك أنها تعتمد على ترجمة الكود من لغة High-level إلى لغة High-level فحسب! رغم أن هذا يسمى Translator أو Transcompiler (و أحيانًا يسمى Compiler بشكل عادي)، و أن هناك لغات شهيرة تعتمد على هذه الطريقة، أولها Pascal و من ضمنها CoffeeScript..

نستطيع ان نرفض الفكرة , لكن لا نستيطع ان نرفض النتائج ! اذا كنت مؤمن بفكرة ما قم بتنفيذها و اترك للاخرين الحكم من خلال النتائج .

احيانا تجاهل الاخرين امر جيد للسير الى الامام .

التنفيذ المباشرة عبر VM على الخادم! (كيف بالضبط؟ - أم المقصود هو الترجمة عبر الـServer إلى JavaScript؟!)

اتوقع ان VM سوف تكون مدمجة مع المتصفح مثل الكروم

تم تعديل بواسطه ahmad123
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الـ vm مكتوبة بلغة js و لذلك ستكون مضمنة مع موقعك.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً خالد .. يا أخي خبر من ألماس ..

هذه اللغة التي ستنقل الويب لبعد جديد ،أخيراً تخلصنا من JS ، من زمان يا Google ! فيها كل ما أحلم به ، لم أستطع إكمال قراءة المواصفات ، فالفرحة غامرة جداً ، أحتاج أن أهدأ و أركز وأكفف دموع الفرح ، و أستخدمها ..

يا سلام ...

بعد اليوم من يريد ان يتضايق عبدالله، فليقل أمامه: JS biggrin.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

سأطرح بعض النقاط, و يمكن أن نتناقش فيها. أتمنى لو كنت مبرمج ويب جيد و لكن للأسف حلمي لم يتحقق بعد لذلك, سأطرح النقاط من وجهة نظر اللغة نفسها :)

الأمر الأول, هو أن لغة Dart حسب رأيي المتواضع لها أهداف حقيقية بتغيير خارطة الـ scripting! أنا أقول هذا الأمر لأن هناك قرارات تم اتخاذها تحتاج إلى تعمق في فهم الأهداف لمعرفة الأسباب الحقيقية وارء بعض القرارات.

أولاً, اختارت Dart أن تتبع أسلوب الـ Classic Inheritance و لا تذهب في طريق الـ Prototype Inheritance. على الرغم من أن الثاني أكثر مرونة, إلا أن الأول يعمل بشكل أكثر من ممتاز في حالة وجود Static Typing. لأن Dart توفر Optional Typing و هذه ميزة حقيقة من المرات القلائل التي أراها في لغة, و أول مرة في لغة C-like لا أدري حقيقة ما مستقبل هذه الميزة. و لكن بلا شك أنها ثورية. و بوجود الـ Classic Inheritance سيكون بالإمكان كتابة كود كفؤ بوجود الـ Static Typing. الجميل في الأمر أنك يمكن أن تبدأ في كتابة code يتبع dynamic typing, و بمجرد أنك قد رأيت أن الـ Prototype ناجح, ستبدأ في إضافة الـ Type Annotation و بالتالي فإنك ستكسب أمرين رئيسيين بهذه الطريقة. أولاً, التطبيق سوف يعمل دون اللجوء لتحديد الأنواع لمرونة الطريقة, ثم عند إضافة الأنواع سينتج لديك كود كفؤ و في نفس الوقت ستتيح الفرصة لاكتشاف أخطاء باستخدام المترجم فقط, كان يجب كتابة unit-testi مملة لها لتغطية جميع مسارات البرنامج!

اختيارهم الـ C-like syntax ليس مستغرباً بالنسبة لي. ليس لأنه الأفضل(أفضل الطريقة البايثونية), و لكن لأن c-like أفضل طريقة للوصول إلى قلب المبرمجين بسرعة. و لكن الغريب في الأمر, أنهم قاموا بكتابة الآلة الافتراضية لـ Dart باستخدام Javascript؟! فكرت في هذا الأمر قليلاً, و كنت سأشعل فتيل الحرب ضد هذه اللغة, و لكن فجأة فهمت المطلوب. هم يريدون أن تتطور اللغة في البداية في كل مكان. الطريقة الوحيدة هي أن تعمل في كل مكان من خلال JS Implementation. الغريب أنهم لا يريدون عمل compilation كما هو الحال في CoffeScript و لكنهم يريدون توفير المرونة في البداية. النتيجة, أن هذه الآلة الافتراضية ستراها على Chrome في وقت ليس ببعيد. ربما بـ Compatibility Mode بحيث إذا كانت الآلة الافتراضية المكتوبة بـ JS موجودة في موقعك سيقوم Chrome بالتقاطها و التعامل مع الأمر. كما قلت, Dart لا تريد أن تكون standard أخرى على الويب, و لكنها تريد أن تكون الـ standard "للتطبيقات" التي تحتاج إلى أداء عالي(و أنا أشير هنا إلى HTML 5)!

عموماً, لدي رأي ظاهري في المكتبات و لكن دون تجربة اللغة بشكل حقيقي لا يمكن الحكم على المكتبات. و قبل أن أنسى, Dart لغة concurrency من المقام الرفيع من أتباع الـ message passing. قد لا أرى هذه الميزة مهمة الآن, و لكن عند توفر concurrent implementations من الآلة الافتراضية ستجبر العديد من المبرمجين على استخدامها لتوفير تطبيقات فعالة.

تحياتي...

تم تعديل بواسطه Khaled.Alshaya
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أعتقد أنهم نسخوا كثير بعض من خصائص Scala ، مثل ، optional typing و concurrency ؟ لست متأكداً ، لم أستخدم Scala حتى الآن لكن من المعلومات التي وردت في هذا الموضوع ارى أنها متشابهة في كثير من الخصائص إن لم أكن مخطئ .

قصة اعتمادها على JS في implementation شيء منطقي جداً ، وإلا فسيكون مصيرها مثل أي plugin ظهر واختفى .

فليقل أمامه: JS

:-) ، تقريباً هو تعوّد على اللغات البرمجية عالية المستوى ، هو من يجعلك تكره اللغات المرنة مثل JS و Lua ونحوها ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
أعتقد أنهم نسخوا كثير بعض من خصائص Scala ، مثل ، optional typing

حسب ما أفهمه, Scala ليس فيها optional typing كالموجود في Dart. الطريقة المتبعة في Scala هي استخلاص النوع من الـ initializer و هي مثل استخدام var في #C و auto في ++C. في Dart يمكنك التنقل بين الـ dynamic typing و الـ static typing.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من باب المعلومة و هي إضافة لا تضيف للموضوع الأصلي:

كلوجر في نسختها الجديدة (1.3) التي صدرت قريباً تحوي معظم هذه المميزات بما فيها الoptional type annotation, كما تم الإعلان منذ زمن عن clojurescript و التي تعمل بنفس الفكر, حيث يمكنك كتابة كود كلوجر و ترجمته (لاحظ أنها ترجمة و ليس تفسير) إلى كود JS و بالطبع clojure script متوافقة مع clojure.

لذا إذا كنت من محبي ليسب يمكنك المتابعة مع كلوجر و إذا كنت تفضل c-like syntax فكن مع dart أما إذا كنت تفضل بايثون فيمكنك الحصول على فائدة ال type annotation باستخدام cython ( سيترجم كود بايثون ل c).

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم..

وجدت رابطًا صباحًا بخصوص لغة Dart. الرابط باختصار يوضح كود الـJavaScript الناتج عن مثال Hello World (أو بالأحرى Hello, Darty!) مكتوب بلغة Dart.

تحذير هام: يرجى إغلاق أي برامج مفتوحة غير المتصفح، و استعمال متصفح خفيف مثل Chrome قبل فتح الرابط!

الرابط: Dart Compilation

شكرًا.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم..

وجدت رابطًا صباحًا بخصوص لغة Dart. الرابط باختصار يوضح كود الـJavaScript الناتج عن مثال Hello World (أو بالأحرى Hello, Darty!) مكتوب بلغة Dart.

تحذير هام: يرجى إغلاق أي برامج مفتوحة غير المتصفح، و استعمال متصفح خفيف مثل Chrome قبل فتح الرابط!

الرابط: Dart Compilation

شكرًا.

17 الف سطر لجملة hello world !

على الهامش وظائف دارت :

My boss is looking for #dart programmers with 3+ years of experience. Please contact us if you're interested.
تم تعديل بواسطه ahmad123
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
كلوجر في نسختها الجديدة (1.3) التي صدرت قريباً تحوي معظم هذه المميزات بما فيها الoptional type annotation,

هل يمكنك الإشارة إلى رابط يشرح الميزة فيها, لا أعتقد أن هذه الميزة بالذات موجودة. و الـ Optional Type Annotation لا تعني أنه يمكن التحويل بين الـ dynamic و static و إنما يمكنك الاستغناء عن var في #C على سبيل المثال, و لكن النوع لا بد من تحديده.

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
وجدت رابطًا صباحًا بخصوص لغة Dart. الرابط باختصار يوضح كود الـJavaScript الناتج عن مثال Hello World (أو بالأحرى Hello, Darty!) مكتوب بلغة Dart.

ممكن ننظر للموضوع من جهتين :

1-عندما تكتب Hello World للغة C فكم سطر assembly سيقوم بتوليده ؟ بينما لو كتبت hello world بلغة assembly مباشرةً فكم سطراً ستحتاج ؟ نفس الأمر هنا !

2- Dart ، استخدمها لكتابة تطبيقات " ويب " ، وليس لكتابة سكربت بسيط للتعديل على DOM ، بمعنى يمكن استخدامها لكتابة لعبة من مليون سطر ، أو لكتابة محرر رسومي متطور ، وليس أن تستخدمها كما تستخدم jQuery ،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كما قلت في تعليقي الأول يا جماعة, الهدف من تحويلها إلى Javascript هو إعطائها فرصة للانتشار و جعل المبرمجين يجربونها في أي مكان. و لكن Dart بكل بساطة لديها potential لكي تكون efficiently compiled مثلها مثل أي لغة كـ Java أو #C. نقطة الأداء, سوف تظهر عندما يتم كتابة VM لها باستخدام ++C/C و سترى كيف يمكن للغة scripting كـ dart أن ينتج عنها كود يعادل المكتوب بأي لغة static. هذا الأمر من المستحيل فعله في حالة js أو python على سبيل المثال, لأن الأنواع لابد أن تكون متوفرة لحظة التشغيل, بينما في dart الأنواع معروفة وقت الترجمة(إلا إن كنت تستخدم الـ dynamic typing فيها). عموماً, سنرى في الأيام القادمة ماذا ستوفر google لهذه اللغة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ممكن ننظر للموضوع من جهتين :

1-عندما تكتب Hello World للغة C فكم سطر assembly سيقوم بتوليده ؟ بينما لو كتبت hello world بلغة assembly مباشرةً فكم سطراً ستحتاج ؟ نفس الأمر هنا !

2- Dart ، استخدمها لكتابة تطبيقات " ويب " ، وليس لكتابة سكربت بسيط للتعديل على DOM ، بمعنى يمكن استخدامها لكتابة لعبة من مليون سطر ، أو لكتابة محرر رسومي متطور ، وليس أن تستخدمها كما تستخدم jQuery ،

بسم الله الرحمن الرحيم، و السلام عليكم و رحمة الله تعالى و بركاته..

أولًا أريد أن أوضح أن وضعي لهذا الرابط لم يكن إلا من باب محاولة إضافة شيء و لو بسيط فقد بحثت لوقت عن نتيجة للتحويل، و توقعت حقيقة أن يكون هناك كود أكبر بخمس إلى عشر مرات مثلًا، و أن يكون هناك تضمين للغة عبر موقع جوجل، أي أني لم أتوقع أن يحتاج كل ملف على موقعي إلى تضمين كل محتويات اللغة و دوالها و مكتباتها - بما أن اللغة كبيرة نسبيًا على برمجية JavaScript لماذا لا يتم إضافة الدوال الضرورية لعمل البرمجية المطلوبة، بدلًا من تضمين اللغة كلها في كل ملف (بما أن التحويل إلى JavaScript - كما يبدو - سيظل فترة غير قصيرة حتى يصبح للغة دعم جيد)، عمومًا أنا لم ألم أحدًا، و أخطئ إن فعلت طبعًا، ففي النهاية هذا الاصدار 0.0.1، و الحكم على شيء قبل إصدار معقول منه، يعتبر خطأً فادحًا.. و أنا إن نقدت، فإن نقدي يكون لأن هذه Google، التي اعتدنا منها على الكثير الكثير.

ثانيًا لم أقل أن في هذا الطول عيب ما، لا عيب فيه و هو أمر عادي (حقيقة أنا لم أقل أي شيء أصلًا، لم أعلق حتى على الرابط!)، الذي فقط جذب إنتباهي في اللغة هو الاهتمام الكبير للغاية بمصطلح high performance!! إذا استمرت اللغة حتى كما هي، و قالوا عنها ما قالوا من مميزات غير الـhigh performance، فسأقبل بكل تأكيد..

بالنسبة للنقطة الأولى في ردك أخي الكريم عبدالله، فعندما أكتب بلغة C و ينتج لي أضعاف الرقم 17000، فإنه ينتج لي كود Assembly سرعة تنفيذه لا تعتبر شيئًا يذكر - و الفرق بينه و بين لغة الآلة ليس شيئًا! الأمر مختلف عندما يكون الأمر عن الويب و الذي يتم تصفح صفحات كثيرة فيه في نفس الوقت، و لتشغيل الصفحة يجب أولًا الوصول إلى محتواها، ثم يجب على المتصفح قراءة هذا الجافاسكريبت سطرًا تلو الآخر، لاحظ أن JavaScript - بالطبع - لغة رفيعة المستوى و ليست بلغة الفرق بينها و بين لغة الآلة في الوقت الحالي لا يكاد يذكر.

و أما النقطة الثانية، فبما أنها تريد استبدال الـJavaScript يجب أن تصلح لأي شيء تقريبًا!

أخيرًا أؤكد أني لم أعلق على سرعة اللغة - في رأيي السرعة ليس لها تلك الأهمية العظيمة التي يراها البعض في الوقت الحالي، خصوصًا و أن قدرات الأجهزة و غيرها تزيد الآن، و إلا لما كنا في عصر الـscripting languages، التي أصبحت تغني عن اللغات "التقليدية".

كل ما استوقفني في الرابط هو كونه نوعًا ما طريف - و كون Google تؤكد - منذ الاصدار الحالي - على موضوع الـhigh performance!

شكرًا..

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخ sitemaker ، عادي .. انتقد اللغة :-) ، أرى في ردك الحرص على أن لا تجرح مشاعرنا :D ،

فقط من باب الأخذ و الرد ،

كل ما استوقفني في الرابط هو كونه نوعًا ما طريف - و كون Google تؤكد - منذ الاصدار الحالي - على موضوع الـhigh performance!

- performance ليس له علاقة بالمساحة المستهلكة ، بمعنى لو كان حجم الصفحة الناتجة عن Dart == 1Mg ، فسأقبل بهذا ، إن كانت النتيجة تنفيذ أسرع بفضل كتابة كود JS Optimized .. أو بفضل VM الذي سيظهر مع chrome ..

- مثل ما قال خالد ، JS هي اللغة التي تفهمها المتصفحات مثلما أن assembly هي التي تفصلنا عن العتاد ( نتجاهل machine code ) ، لذلك لا يوجد حل الآن الا الاعتماد على JS حتى يظهر الحل الآخر ..

لذلك لا يمكن أن أتخيل أن هذا الكود :


class HelloDartTest {
static testMain() {
print("Hello, Darter!");
}
}


main() {
HelloDartTest.testMain();
}

سيصبح هكذا :

document.write("Hello , Darter");

لأن السكربت الناتج وهو JS ، يجب أن يحتوي على parser للغة و أمور أخرى .. باعتبار أننا نتحدث عن JS implementation للغة ..بما في ذلك بعض المكتبات البرمجية الناتجة في الكود مثل المكتبة الرياضية Math كما يظهر في الرابط الذي وضعته ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم..

بالنسبة لعدم النقد، فيبدو أني أكثرت من توضيح هذه النقطة في ردي! الأمر و ما فيه، أني لا أريد أن أكون كثير النقد - دون سبب - لشيء لم أصل لمستواه بعد، و أحاول قدر ما الإمكان أن أتحدث في حدود ما أعلم، و مع ذلك فإني أستمتع كثيرًا بالنقاش في الفريق العربي للبرمجة، على العكس من مواقع كثيرة أخرى..

بالطبع الآداء (أخيرًا تذكرت تلك تعريب performance) لا يتعلق بالحجم، لكني لا أصدق أبدًا أن يكون تنفيذ 17000 أسرع أو قريب من سرعة تنفيذ سطر واحد (أو حتى بفرق معقول)، رغم ذلك أدرك الفرق بين JavaScript "الركيكة"، و ما تريد Google تقديمه..

إذا كانت Google حقًا تنوي المتابعة و دعم اللغة في Chrome، فستكون فرحتي شديدة لو كانت الـVM مفتوحة المصدر، و أن تستخدم - و لو معدلة بشكل بسيط - في باق المتصفحات! لا أريد تكرار مأساة JavaScript و ربما CSS، لغات يدعمها كل متصفح بطريقته الخاصة، و على المطور أن يرضي كل المتصفحات..

لدي استفسار بسيط عن الـVM، هل يعني دمجها في المتصفح أن اللغة ستكون مفسرة؟ هل يمكن - أصلًا - من الناحية العملية تطبيق لغة مترجمة من ناحية المتصفح؟! لا أتخيل أن أضع Byte code مثلًا في صفحة ويب؟! أم سيكون الأمر عبارة عن ملف مفصل، أضمن رابطًا له بشكل ما في كود الصفحة؟

طبعًا لا يمكن أن يتحول كود Hello, Darty! هذا إلى سطر الواحد! لكني كنت سأرضى في حالة من حالتين:

  1. في حالة اتباع نفس الطريقة، بأن يتم تضمين اللغة مع الكود: أن يتم البحث عن الدوال و المميزات المستخدمة داخل الكود، و تضمين المستخدم منها فقط ضمن الكود..
  2. أو أن يتم أصلًا وضع كود كالتالي مثلًا:
    <script type="text/javascript" src="http://dartlang.org/dart-latest...[رابط تخيلي]"></script>

    أي تضمين كود من ملف ثابت، يحتوي على اللغة! و بذلك يتم تقليل المساحة بشكل كبير جدًا! بدلًا من أن تستهلك كل صفحة ويب أكتبها 17000 سطر إضافي!!، لن يزيد أي سطر إضافي أكثر من سطر تضمين اللغة! و بدلًا من أن يتم قراءة كود اللغة كاملًا مع كل تنفيذ لكل صفحة، يتم قراءة ملف ثابت، و عمل Caching له لدى الجميع، و بالتالي يصبح تشغيل لغة Dart قريب للغاية من JavaScript، و يلغي ذلك الفرق البسيط الفرق بين اللغتين من نواح عديدة، و يقلل الحاجة لفترة طويلة من الزمن للـVM، و يترك لـGoogle فترة أطول للتركيز على اللغة نفسها..

طبعًا الخيارين الأول و الثاني جيدان، مع أني أميل للخيار الثاني (ربما بشكل معدل، كأن يكون هناك من 5 نسخ إلى 25 نسخة (مثلًا) من نفس الاصدار، يتم اختيار النسخة المطلوب حسب المكتبات التي يحتاجها الكود!

لأن السكربت الناتج وهو JS ، يجب أن يحتوي على parser للغة و أمور أخرى .. باعتبار أننا نتحدث عن JS implementation للغة ..بما في ذلك بعض المكتبات البرمجية الناتجة في الكود مثل المكتبة الرياضية Math كما يظهر في الرابط الذي وضعته ..

للأسف، السطور الـ17000 الإضافية هي عبارة عن المكتبات (كما تفضلتَ) و لكن معها أيضًا الدوال التي تجري العمليات الحسابية و المقارنات و الأشياء التي قد يجريها المفسر أو المترجم في بعض اللغات.. و هذه نفس الطريقة التي اتبعتها في منشئ المواقع في الاصدار 0.3، فالجمع و الضرب و المقارنات، بل و كذلك الـfor loop، عبارة عن مجموعة من نداءات الدوال!! و نفس الأمر كذلك يطبق - حسب فهمي - في Dart..

الذي أردت أن أقوله أن هذه الـ17000 سطر، لا تحتوي على الـParser و لا على غيره! فقط تحتوي على أي شيء يحتاجه الكود في الـrun-time..

لا أستطيع تخيل حجم اللغة لو احتوت كذلك على المفسر، و كل هذا يتم تنفيذه مع كل مجرد تحديث لصفحة!!

شكرًا..

تم تعديل بواسطه sitesmaker
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالنسبة للنقطة الأولى في ردك أخي الكريم عبدالله، فعندما أكتب بلغة C و ينتج لي أضعاف الرقم 17000، فإنه ينتج لي كود Assembly سرعة تنفيذه لا تعتبر شيئًا يذكر - و الفرق بينه و بين لغة الآلة ليس شيئًا!

سأعلق فقط على هذه النقطة

الفرق بين C وAsm نفسها ليس بكبير جدا حيث ان اساسا حتي لو كانت هذه سببت مشكلة مثل ما حدث بين Dart وJS

فاساسا يمكن خلط C مع الاسمبلي مثل التالي



//main.c main() { int i = sqr(11); printf("%d\n",i); } //sqr.s .globl sqr sqr: movl 4(%esp), %eax imull %eax, %eax ret


اما بخصوص لغة Dart فانتظر اكتمال الصورة الكاملة للغة واعطيها فرصة حتي تظهر كافة فدرتها ومن ثم اعلق او أحكم عليها

تم تعديل بواسطه MohamedIBrahim
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

هل يمكنك الإشارة إلى رابط يشرح الميزة فيها, لا أعتقد أن هذه الميزة بالذات موجودة. و الـ Optional Type Annotation لا تعني أنه يمكن التحويل بين الـ dynamic و static و إنما يمكنك الاستغناء عن var في #C على سبيل المثال, و لكن النوع لا بد من تحديده.

أخي خالد أرجو أن يجيب هذا الرابط على سؤالك :

http://clojure.org/java_interop?f=print#Java%20Interop-Type%20Hints

و هذا مثال:

 
(defn len [x]
(.length x))
(defn len2 [^String x]
(.length x))
user=> (time (reduce + (map len (replicate 1000000 "asdf"))))
"Elapsed time: 8315.198 msecs"
4000000
user=> (time (reduce + (map len2 (replicate 1000000 "asdf"))))
"Elapsed time: 1158.045 msecs"
4000000

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جميل أخ محمد, لم أكن أعرف أنها موجودة في Clojure :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .