abshammeri

لغة Haxe ، اكتب الكود مرّة ، وحوّله إلى أي لغة تريد.

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

العنوان اقتبسته " من أحد الإعلانات الرخيصة : جرّبه مرة و رح تستخدمه في كل مرة " ، و لكن هذا واقع هذه اللغة Haxe التي يصفها صاحبها بـ multylangage platform ،

باختصار :

- تكتب الكود بلغة Haxe ، حيث الصيغة قريبة من Java إلى حد كبير ، اللغة هي Strongly Typed ، يعني تكتب أنواع المتغيرات بنفسك ( أجمل شيء ! ) ، استخدم ماتريد من funcitons و classes و enum ..

- اختر الوجهة التي تريد :

  • Cpp
  • Javascript
  • Java - قريباً ..
  • C# - قريباً ..
  • PHP
  • لغات أخرى .
  • iPhone + Flash ( هذه ليست لغة ، و لكن سأحشرها هنا ) .

- يظهر أن اللغة تشمل على مكتبات قياسية ( XML - Date - Math .. الخ ) .

- اللغة تدعم بعض الأمور الخاصة ، مثل ( Ajax - OpenGL .. الخ ) .

- اللغة مكتوبة بلغة " الناقة " Caml..

- لم أجربها ، لكن سأجربها إن شاء الله .. فلعلها تغنينا عن JS ، على الأقل نكتب class بطريقة مقبولة ..

http://haxe.org/

2

شارك هذا الرد


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

الصيغة قريبة من Java إلى حد كبير ولا يدعم واجهتها فى البداية

غريبة طريقة التطوير هذه

لكن مبدئيا يبدو أنها جميلة سأجربها ومن ثم لى عودة

0

شارك هذا الرد


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

بصراحة رأي شخصي لا فائدة من هذه الأدوات الغبية لأنها في النهاية ستنتج كوداً سيئاً و لن تستغل نقاط قوة كل لغة و لن تتفادى سلبياتها. ببساطة الترجمة الميكانيكية لن تنتج لك كود سريع في ++C و لا expressive كود في JS و هكذا!

5

شارك هذا الرد


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

[email protected] +1

انا رأىى من رأى خالد الشايع

0

شارك هذا الرد


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

ممكن يكون لها فائدة

على سبيل المثال (مجرد تصور)

اولا :-

يمكن ان تكتب بها مكتبات libraries وتصبح هذه المكتبات جاهزة للتحويل والاستخدام مع اى لغة على مستوى ال source code

ثانيا :-

اذا كان فريق العمل يضم مبرمجين لكل منهم خبرة بلغة مختلفة يستخدموا هذه اللغة فى التطوير وفى نفس الوقت كل شخص على حده

يحول المشروع الى اللغة التى يجيدها حتى يسهل عليه قراءة الشفيرات التى يكتبها الاخرين بشكل مؤقت حتى يستوعب هو هذه اللغة الجديدة

ثالثا :-

اذا كان فريق العمل يعمل على التوالى بمعنى شخص ينجز مهمة ويسلمها للاخر فان التحويل الى لغة اخرى ثم استعمالها سيكون خيار متاح

امام المطور الاخير فقط

يعنى لو يعمل فى المشروع اكثر من اثنين على التوالى .... فان الثانى هو المحظوظ لانه سيحول المشروع الى اللغة التى يريدها ويستعملها

اما اذا كا المشروع يضم ثلاثة اشخاص على التوالى ... فان الثالث هو المحظوظ

طبعا لا اقصد الدفاع عن اللغة ولا مصلحة لى فى ذلك

وانما اقصد ان نبحث فى الاشياء عن الفوائد الممكنة (يفترض ان من صمم اللغة يبين لنا هذه الفوائد ولا نحتاج ان نبحث عنها)

هذا الرابط يوضح لماذا تم عمل اللغة بهذا الاسلوب

http://haxe.org/doc/why

والله الموفق

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

شارك هذا الرد


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

الخطأ ليس فى توضيح هذا الامر يا استاذ محمود

الخطأ الذى وقع فيه المبرمج (مصمم اللغة)

هو أنه لم يعطي جانب التوثيق النظرى أى اهمية واشير هنا الى ان التوثيق النظري هنا ليس مجرد كتابة الوصف وغيرها من هذه الامور

بل ذكر مثلا فكرة اللغة العامة وكيف تم تطويرها وما الذى يمكنها تقديمه ....الخ

0

شارك هذا الرد


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

الخطأ ليس فى توضيح هذا الامر يا استاذ محمود

الخطأ الذى وقع فيه المبرمج (مصمم اللغة)

هو أنه لم يعطي جانب التوثيق النظرى أى اهمية واشير هنا الى ان التوثيق النظري هنا ليس مجرد كتابة الوصف وغيرها من هذه الامور

بل ذكر مثلا فكرة اللغة العامة وكيف تم تطويرها وما الذى يمكنها تقديمه ....الخ

اشعر ان الفكرة التى بنى عليها المشروع صغيرة جدا .... فى حين المجهود المطلوب كبير جدا .... والمشاكل المتوقعة كثيرة

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

لكن من خلال تصفحى للموقع فانه لم يقدم حل للمشكلة المتوقعة (فقد مميزات اللغات التى يتم التحويل لها)

و اتضح ان الهدف الانتشار حتى لو على حساب الملامح التى تميز لغة بعينها

والرابط التالى يوضح ذلك

http://haxe.org/forum/thread/3044

والله الموفق

0

شارك هذا الرد


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

افضل ما بالموقع والفكرة عموما هو الشكل العام للموقع :lol: :lol: >>> استايل حلو

0

شارك هذا الرد


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

افضل ما بالموقع والفكرة عموما هو الشكل العام للموقع :lol: :lol: >>> استايل حلو

والجميل ايضا فى الموقع هذا السطر الاخير

Powered by haXe

افترض ان معناها ان الموقع طور باستخدام haXe

اذا كان المقصود فى هذا السطر haXe كلغة برمجة

والله الموفق

0

شارك هذا الرد


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

@ lمحمد ابراهيم و PWCTmaker ..

لو قرأنا هذه الاسطر بتمعن

The idea behind haXe is to let the developer choose the best platform for a given job. In general, this is not easy to do, because every new platform comes with its own programming language. What haXe provides you with is:

a standardized language with many good features

a standard library (including Date, Xml, Math...) that works the same on all platforms

platform-specific libraries : the full APIs for a given platform are accessible from haXe

فانه يقول انها لحل المشاكل وليست من السهولة تطوير مثل هذه المسألة .. والسبب ان كل اطار عمل وله لغاته ..

لذلك فان ما يقدمه هو تسهيل .. اي انه لو بدأ مع هذه الفكرة شخص مبتدأ برمجيا لاستطاع ان يكتب كود في اي لغة يريد ..

واعتقد هنا اغلب الفائدة ستكون من ناحية Syntax الخاص باللغة وليس من ناحية Object File .. لان لكل لغة طريقتها في عمليات الترجمه ولا يستطيع ان يحصر طرق ترجمة لغات البرمجة في بيئة واحد فهذا صعب جدا .. خصوصا وانه ينوي ادخال الجافا والـ C# .. ونعلم ان الجافا ومالها في Bit Code , و ماكينة الجافا .. او مسائل الـ MSIL الخاصة بالسي شارب وميكروسوفت ..

لذلك الفائدة المرجوة من وراء هذه البيئة عظيمة جدا .. لمن يريد ان يركز معها

مثلا .. لا استطيع ان اكتب كود للجافا لانني لا اعرف .. او للبايثون مثلا ..لم اتعامل معها ..

لكن لو دعمت السي شارب لتطوير مشروع للجافا سيكون هذا الشئ كبير بالنسبة لي لانني لن احتاج الى مبرمج جافا .. وانما مجرد بيئة بسيطه مساعدة ..

1

شارك هذا الرد


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

واعتقد هنا اغلب الفائدة ستكون من ناحية Syntax الخاص باللغة وليس من ناحية Object File

الامر يتخطى التدخل على مستوى ال Syntax ويصل الى التدخل على مستوى الناتج ايضا Object

وهذا مااتضح من خلال النص التالى

Flash : You can compile a haXe program to a .swf file. haXe is compatible with Flash Players 6 to 10, with either "old" Flash 8 API or newest AS3/Flash9+ API. haXe offers very good performance and language features to develop Flash content.

حيث ان الاداء performance يتعلق بالكود الناتج من الترجمة Object والمكتبات المستعملة Libraries وقت التشغيل Runtime

والنص التالى اكثر وضوحا حول هذه النقطة

The Flex compiler is a command-line compiler like haXe. haXe provides many of the same features as a pure AS3 application compiled with the Flex Compiler. The haXe compiler allows many more optimizations such as inlining, generics, and alchemy opcodes, which allow for faster applications. The haXe compiler is also faster to compile.

ولانه يتدخل فى ال object فان المسالة ليست مجرد Translator الى لغة ما مستخدما كل ملامحها features

وانما هناك ملامح جديدة ليست فى اللغة المستهدفة بشكل مباشر (مزايا) وهناك ملامح سوف افقدها (عيوب) ناتجة عن استخدام haXe

والله الموفق

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

شارك هذا الرد


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

صح كلامك ..

الامر يتخطى البناء النحوي للجمل ..

لكن قصدت ان الفوائد هنا ستكون كبيرة

لكن لو استمر الامر للدواخل بالتأكيد لن تكون مثل مستوى اللغات الاصلية

الا بدعم كبير من الشركات المنتجة للغات

لاننا هنا نتحدث عن FrameWorks ..

0

شارك هذا الرد


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

على ذكر Translator ،

لغات مثل Haxe أو الأداة "php hiphop" التي تحوّل php إلى ++C ( عرفتها من العضو password123 ) أو حتى GWT التي جزء من أهدافها توليد Javascript ونحو ذلك من الأدوات ، يسمّونها Translator ،

هل بناء شيء مثل Translator هذا ، يسير على نفس القواعد المتبعة في كتابة Compiler للغة ما ؟ أم له أسلوب مختلف .

0

شارك هذا الرد


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

على ذكر Translator ،

لغات مثل Haxe أو الأداة "php hiphop" التي تحوّل php إلى ++C ( عرفتها من العضو password123 ) أو حتى GWT التي جزء من أهدافها توليد Javascript ونحو ذلك من الأدوات ، يسمّونها Translator ،

هناك فرق بين التحويل Transformation كعملية As a Process

وبين المحول Translator كمصطلح As a Term

التحويل Transformation من لغة الى اخرى لايعنى ان الاداة المستعملة فى التحويل يطلق عليها Translator او محول

لان كل من المترجم Compiler او المحول Translator يقوم بالتحويل من لغة الى اخرى ولكن كلاهما يختلف عن الاخر

مثلا مترجم لغة سى The C Compiler يقوم بالتحويل Transformation من لغة السى الى الاسمبلى

ولكنه يسمى مترجم Compiler وليس محول Translator

الفرق بين ال Compiler و ال Translator يكمن فى ان ال Translator

1 - يحول من لغة الى لغة اخرى فى نفس المستوى تقريبا (يعنى لغات متشابهة الى حد كبير)

بينما المترجم يحول من لغة فى مستوى ما (مثل السى) الى لغة فى مستوى اخر (مثل الاسمبلى)

2 -غالبا لا يتدخل ال Translator فى اضافة اشياء الى الناتج Object وقت التنفيذ Runtime الا فى نطاق ضيق جدا

حيث ان اللغات سواء المحول منها او المحول اليها متقاربة فى الامكانيات والمفاهيم

3 - الكود الناتج من ال Translator عندما تقراه ترى كانه كود عادى مكتوب باللغة المستهدفة الى حد كبير وليس كود خاص يعمل مع Interpreter خاص مثلا

ومن هنا ال haXe يمكن ان تحكم عليه حسب الفرق بين اللغة haXe واللغات التى يستهدفها

بالاضافة الى المستوى من التدخل الذى يحدث على الناتج فى اللغة المستهدفة

هل بناء شيء مثل Translator هذا ، يسير على نفس القواعد المتبعة في كتابة Compiler للغة ما ؟ أم له أسلوب مختلف .

بالنسبة لقواعد عمل ال Translator

فهو يمكن ان يبنى مثل ال Compiler ولكن فى مرحلة ال Code Generation سيكون العمل اسهل لانك تحول الى لغة مشابهة الى اللغة الاساسية

ويمكن ان يبنى بشكل مختلف يعتمد على مبادىء Text Processing واستعمال Find & Replace ولكن سيكون الناتج محول ضعيف يمكن ان يحول

كود خاطىء الى كود خاطىء بدون ان يدرى لانه لن يحتوى على Syntax Analysis فى هذه الحالة

والله الموفق

0

شارك هذا الرد


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

هناك فرق بين التحويل Transformation كعملية As a Process

وبين المحول Translator كمصطلح As a Term

التحويل Transformation من لغة الى اخرى لايعنى ان الاداة المستعملة فى التحويل يطلق عليها Translator او محول

لان كل من المترجم Compiler او المحول Translator يقوم بالتحويل من لغة الى اخرى ولكن كلاهما يختلف عن الاخر

مثلا مترجم لغة سى The C Compiler يقوم بالتحويل Transformation من لغة السى الى الاسمبلى

ولكنه يسمى مترجم Compiler وليس محول Translator

الفرق بين ال Compiler و ال Translator يكمن فى ان ال Translator

1 - يحول من لغة الى لغة اخرى فى نفس المستوى تقريبا (يعنى لغات متشابهة الى حد كبير)

بينما المترجم يحول من لغة فى مستوى ما (مثل السى) الى لغة فى مستوى اخر (مثل الاسمبلى)

2 -غالبا لا يتدخل ال Translator فى اضافة اشياء الى الناتج Object وقت التنفيذ Runtime الا فى نطاق ضيق جدا

حيث ان اللغات سواء المحول منها او المحول اليها متقاربة فى الامكانيات والمفاهيم

3 - الكود الناتج من ال Translator عندما تقراه ترى كانه كود عادى مكتوب باللغة المستهدفة الى حد كبير وليس كود خاص يعمل مع Interpreter خاص مثلا

ومن هنا ال haXe يمكن ان تحكم عليه حسب الفرق بين اللغة haXe واللغات التى يستهدفها

بالاضافة الى المستوى من التدخل الذى يحدث على الناتج فى اللغة المستهدفة

بالنسبة لقواعد عمل ال Translator

فهو يمكن ان يبنى مثل ال Compiler ولكن فى مرحلة ال Code Generation سيكون العمل اسهل لانك تحول الى لغة مشابهة الى اللغة الاساسية

ويمكن ان يبنى بشكل مختلف يعتمد على مبادىء Text Processing واستعمال Find & Replace ولكن سيكون الناتج محول ضعيف يمكن ان يحول

كود خاطىء الى كود خاطىء بدون ان يدرى لانه لن يحتوى على Syntax Analysis فى هذه الحالة

والله الموفق

لدى سؤال بسيط يا محمود

لما مثلا انا عايز اعمل Translator للتحويل من لغة او اخري اى كانت على سبيل المثال

لنا أجى حسب كلامك فان الTranslator هيتدخل فى بعض امور Object فى وقت التنفيذ

لكن ما هى القاعدة فى ذلك بمعنى اخر

هل أنا كمصمم للTranslator هذا من يحدد ذلك ؟ >>>>الفكرة العامة هى اننى اريد ان يتم الامر تلقائيا بدون تدخل فى الكود الناتج فى اى وقت فهل هذا ممكن

0

شارك هذا الرد


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

لدى سؤال بسيط يا محمود

لما مثلا انا عايز اعمل Translator للتحويل من لغة او اخري اى كانت على سبيل المثال

لنا أجى حسب كلامك فان الTranslator هيتدخل فى بعض امور Object فى وقت التنفيذ

لم اقل ذلك ... انا قلت العكس

راجع النقطة التالية

2 -غالبا لا يتدخل ال Translator فى اضافة اشياء الى الناتج Object وقت التنفيذ Runtime الا فى نطاق ضيق جدا

حيث ان اللغات سواء المحول منها او المحول اليها متقاربة فى الامكانيات والمفاهيم

كن ما هى القاعدة فى ذلك بمعنى اخر

هل أنا كمصمم للTranslator هذا من يحدد ذلك ؟ >>>>الفكرة العامة هى اننى اريد ان يتم الامر تلقائيا بدون تدخل فى الكود الناتج فى اى وقت فهل هذا ممكن

مادخل التلقائية فى الموضوع !!!

طبيعى ان عملية التحويل تتم بشكل تلقائى بمجرد تشغيل المحول وتحديد السورس .... فانه يقوم بالتحويل تلقائيا

المقصود بالتدخل فى الكود الناتج ... هو تدخل من مصمم المحول اثناء تصميم وبرمجة المحول فقط .... ثم بعد ذلك يعمل المحول تلقائيا

وكما ذكرت فى المحول يكون التدخل طفيف ويتم التحويل بين لغات متشابهة الى حد كبير

اما لو لغات مختلفة الى حد كبير ..... هنا نكون غالبا امام مشروع مترجم Compiler وليس مجرد محول Translator

والله الموفق

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

شارك هذا الرد


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

لا يوجد فرق, اللهم إلا أن الناس اعتادت على تسمية Compiler للترجمة من اللغات العالية المستوى إلى اللغات الدنيا. بينما translator هو كلمة عامة. في النهاية الـ Compiler عبارة عن Translator.

2

شارك هذا الرد


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

لا يوجد فرق, اللهم إلا أن الناس اعتادت على تسمية Compiler للترجمة من اللغات العالية المستوى إلى اللغات الدنيا. بينما translator هو كلمة عامة. في النهاية الـ Compiler عبارة عن Translator.

ال Translator يفترض صحة الكود من اللغة المصدر Source Language التى يحول منها

وبالتالى يقوم ال Translator بالتحويل بدون القيام ب Syntax Analysis ولو اعطيته كود خاطىء سيتحول الى كود خاطىء

هذا اولا

وايضا ال Translator يفرض ان يحول الى لغة Destination Language يكون لها Compiler اساسا

ولهذا فهو لاينتج Object Code وانما ينتج Source Code بلغة اخرى

1. A translator presumes the code is correctly formatted and would

compile if passed to a compiler. Compilers syntactically scan code to

find syntax errors and in some cases correct them.

2. A translator produces only output for another compiler, a compiler

(usually) generates object files and/or executables. (Some actual

compilers generate source for another language or assembly.)

3. A translator makes certain assumptions about the code being

presented to it, that it is a complete or reasonably complete piece of

code. A compiler will check and (usually) complain if you hand it a

fragment of a program.

النص المقتبس من الرابط التالى

http://compilers.iecc.com/comparch/article/04-05-051

والله الموفق

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

شارك هذا الرد


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

عزيزي PWCT Maker,

حسب السياق يتضح المعنى. كلمة Translator متداولة أكثر عند الحديث عن الناحية النظرية سواء كان ذلك الـ Translator عبارة FSM أو Automaton أو حتى Turing Machine بعظمتها! عندما يكون الحديث على التطبيق يطلق عليه Compiler. و لكن كما قلت سابقاً كلمة Translator عامة أكثر من Compiler, بينما الأخيرة انحصر استخدامها في معنى واحد.

ال Translator يفترض صحة الكود من اللغة المصدر Source Language التى يحول منها

وبالتالى يقوم ال Translator بالتحويل بدون القيام ب Syntax Analysis ولو اعطيته كود خاطىء سيتحول الى كود خاطىء

الـ Syntax Analysis ماهي إلا عملية الـ Deriving. يعني أنك ستبني الـ Parsing Tree, و لاحظ أن الشجرة هنا المقصود بها الشجرة نظرياً. كون الـ Translator يقوم بعمل Backtracking في حالة وجود خطأ فهذا ليس مهماً من الناحية النظرية لسبب بسيط. أنك عندما تقوم بكتابة القواعد فإن أي خطأ يعني أن الـ machine انتقلت للـ halt state. بمعنى آخر أن أي خطأ يوقف عملية الترجمة كلها. في الحياة العملية هذا يجعل العمل مع المترجم مستحيلاً, لذلك لابد من تحديد سبب الخطأ(التحديد بشكل مطلق غير ممكن, و لكن المترجم يقدم اقتراحات من خلال توقعات). إضافة إلى ذلك فإنه يفترض إحدى تلك التوقعات و يسير في عملية الترجمة حتى يواجه خطأ آخر, و يحاول افتراض أن المبرمج يقصد قاعدة محددة. و بذلك تحصل على قائمة من الأخطاء بدلاً من ترجمة الكود من جديد عند حصول أي خطأ.

تحياتي,

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

شارك هذا الرد


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

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

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