الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه Abdullah.Alshammeri في 19 يونيو 2011 · 18 رد · 1,254 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

العنوان اقتبسته " من أحد الإعلانات الرخيصة : جرّبه مرة و رح تستخدمه في كل مرة " ، و لكن هذا واقع هذه اللغة 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

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

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

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

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

GoodBye

#3

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

5
#4

Khaled@ +1

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

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#5

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

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

اولا :-

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

ثانيا :-

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

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

ثالثا :-

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

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

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

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

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

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

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

http://haxe.org/doc/why

والله الموفق

تم تعديل هذه المشاركة بواسطة PWCT Maker في 19 يونيو 2011 في 17:52

1
#6

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

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

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

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

GoodBye

#7
اقتباس

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

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

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

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

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

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

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

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

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

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

والله الموفق

#8

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

GoodBye

#9
اقتباس

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

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

Powered by haXe

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

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

والله الموفق

#10

@ 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
#11
اقتباس

واعتقد هنا اغلب الفائدة ستكون من ناحية 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 في 19 يونيو 2011 في 21:39

#12

صح كلامك ..

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

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

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

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

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

#13

على ذكر Translator ،

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

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

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#14
اقتباس

على ذكر 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 فى هذه الحالة

والله الموفق

#15
PWCT Maker كتب:

هناك فرق بين التحويل 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 هذا من يحدد ذلك ؟ >>>>الفكرة العامة هى اننى اريد ان يتم الامر تلقائيا بدون تدخل فى الكود الناتج فى اى وقت فهل هذا ممكن

GoodBye

#16
اقتباس

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

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

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

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

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

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

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

اقتباس

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

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

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

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

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

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

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

والله الموفق

تم تعديل هذه المشاركة بواسطة PWCT Maker في 20 يونيو 2011 في 19:55

#17

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

2
#18
اقتباس

لا يوجد فرق, اللهم إلا أن الناس اعتادت على تسمية 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 في 20 يونيو 2011 في 23:02

#19

عزيزي 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 في 21 يونيو 2011 في 01:23

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…