PDA

View Full Version : گفتگو: پروژه ساخت یک زبان برنامه نویسی !



Sundown
دوشنبه 26 اسفند 1387, 14:07 عصر
سلام
بنده از حدود دو ماه پیش بود که فکر ساخت یک زبان برنامه نویسی جدید به ذهنم رسید

یعنی قصد ساخت زبانی را داشتم که بر روی دات نت و کتابخانه ی عظیمش اف سی ال کار کنه
هدفم از ساخت این زبان فقط کسب تجربه برای آینده است و به هیچ عنوان قصد رقابت با زبانهایی مثل جاوا یا سی شارپ را ندارم
اما پس از جویا شدن نظر یکی از اعضای همین سایت در پیام خصوصی به این نتیجه رسیدم که این زبان برای موفقیت باید علاوه بر داشتن امکانات زبان های دیگر برتری هایی هم نسبت به آنها داشته باشد ؟ نظر شما چیست ؟ آیا داشتن برتری بر زبان های دیگر یکی از شرط های تولد یک زبان است یا نه ؟
مثلا من در وی بی دات نت خصوصیتی را نمیبینم که زبان های دیگر از حل آن عاجز مانده باشند ؟
اما این زبان با وجود زبان هایی مثل سی شارپ و جاوا متولد شد بی آنکه برتری بر آنها داشته باشد ؟
در مورد زبان باید بگویم که در واقع یک مفسر است و نه یک کامپایلر
یعنی مفسر زبان من دستورات خودش رو به صفر و یک تبدیل نمیکنه بلکه خروجیش کد یک زبان دیگر تحت دات نت است و بعد کامپایلر اون زبان هست که برنامه رو میسازه
نظر شما در مورد این مسئله چیست ؟ آیا راه بهتری سراغ دارید ؟

و مهمترین مسئله این است که در زبان های موجود خلا چه چیزی احساس میشود که ما بتوانیم در این زبان جدید این خلا را پر کنیم؟

در مورد کتابخانه ی دات نت آیا به همین کتابخانه اکتفا کنیم و یا توابعی را به آن اضافه کنیم ؟
این توابع در چه قسمت هایی میتواند اضافه شود ؟ یعنی چه توابع یا کلاس هایی در دات نت کم داریم ؟

در مورد ابزار هایی مثل آی دی ای نظر خود من ساخت یک آی دی ای جدید است نظر شما در این رابطه چیست؟

و در نهایت به نظر شما این پروژه تا چه حد میتواند مفید باشد ؟ تا چه حد می تواند گره ای را باز کند یا فقط یک پروژه بی معنی و بی فایده است؟
و در آخر :
هل من ناصر ینصرنی ؟

پیشاپیش از شما که وقت میذارید ممنون

___________________________
نویسنده داس هیچ گاه فکر نمیکرد سیستم عامل بی استخوانش روزی قلب ویندوز شود و به تمام نقاط جها رخنه کند
لینوس توروالدز در پیامی که به گروه خبری مینیکس اعلام کرد :در حال کار بر روی سیستم عامل کوچکی هستم که فقط برای سرگرمی آن را میسازم خواستم نظر شما را در این رابطه بدانم ؟ ( و توروالدز هیچ گاه فکر نمیکرد که این سرگرمی روزی قلب تپنده سرورهای جهانی بشود
آدیداس هم با پینه زدن کفش ها توانست بزرگترین کارخانه تولید کفش را بسازد
...

blue_lotus
دوشنبه 26 اسفند 1387, 14:56 عصر
سلام دوست عزیز

من همیشه از این ایده ها خوشحال شدم و در حد توانم حمایت کردم چون کسانی می تونن پیشرفت کنن که شجاعت و نوآوری داشته باشن.

نکته هایی رو به ذهنم میرسه که بیان می کنم؛
1- هدف شما از ساخت و تولید این زبان چی هست و چرا؟
2- این طرح نیاز به بودجه و همایت مالی و انسانی و فکری داره. ( به طور مثال وقتی شرکتی مثل ماکروسافت میاد یک ویندوز رو طراحی میکنه برای همایت از اون هم میاد زبان برنامه نویسی و بعد از اون کتاب آموزشی زبان برنامه نویسی و فناوری های جدید و برنامه هایی در اون ضمینه منتشر میکنه، وگرنه هیچ وقت دات نت دات نت نمیشد!)
3- این کار نیاز به خلاقیت و نوآوری داره تا حدی، چرا که باید حرفی برای گفتن داشته باشه. هدفی که داره که میتونه ساده تر کردن زبان برنامه نویسی یا آموزشی و ... باشه. ضمن اینکه هر لحظه ممکنه فناوری جدید و زبان برنامه نویسی جدیدی رو غول های بزرگ برنامه بیرون بدن که این زبان شما بلا استفاده بمونه.

فعلا همین نکات به ذهنم می رسید .

این نکته هم قابل طرحه که اون شرکت هایی رو که اسم بردین در زمان خودشون کارهاشون خلاقیت داشت و به مرور زمان نیروی انسانی و توان مالی هم باعث شد که به اینجا برسن.

عقیده دارم هیچ چیز غیر ممکن نیست اما تلاش و صمیمیت همراه با اون طرح لازمه پیروزی هست

موفق باشید

xxxxx_xxxxx
دوشنبه 26 اسفند 1387, 15:38 عصر
سلام
نمي دونم اين تاپيك رو ديديد يا نه:
http://barnamenevis.org/forum/showthread.php?t=129487
سوالهاتون اينجا جواب داده شده.
حتماً از تجربه هاي ايشون استفاده كنيد.
موفق باشيد/

Mehdi Asgari
دوشنبه 26 اسفند 1387, 17:56 عصر
داری میگی نمیخوای با زبان های دیگر رقابت کنی (در واقع فعلا فقط میخوای یاد بگیری) پس نیازی به این همه سوال نیست. شروع کن به طراحی و ساخت زبانت. قبلش کمی تجربه کسب کن. مثلا زیر مجموعه ای از پاسکال یا سی رو (با روش ها و ابزار مختلف. LLVM و Phoenix رو حتما ببین)

آیا داشتن برتری بر زبان های دیگر یکی از شرط های تولد یک زبان است یا نه ؟
معلومه که نه . کسی جلوی تو رو نگرفته ؛ ولی اگه میخوای کسی از برنامه ات استفاده کنه ، جواب سوالت مثبته

مثلا من در وی بی دات نت خصوصیتی را نمیبینم که زبان های دیگر از حل آن عاجز مانده باشند ؟
این بحث ربطی به سوالت نداره ولی مایکروسافت نمی تونست کاربران یکی از پرسود ترین زبان هاش رو نادیده بگیره و به همه بگه بیایید سی شارپ یاد بگیرید.

در مورد زبان باید بگویم که در واقع یک مفسر است و نه یک کامپایلر
از DLR استفاده کن. نیاز نیست خروجی برنامه ات مثلا سی شارپ باشه ، با استفاده از DLR خروجی برنامه ات MSIL خواهد بود (مثل IronPython)

و مهمترین مسئله این است که در زبان های موجود خلا چه چیزی احساس میشود که ما بتوانیم در این زبان جدید این خلا را پر کنیم؟
این سوال با حرفات در تضاده. فعلا نیازی نیست زبانت چیز جدیدی داشته باشه

در مورد کتابخانه ی دات نت آیا به همین کتابخانه اکتفا کنیم و یا توابعی را به آن اضافه کنیم ؟
این توابع در چه قسمت هایی میتواند اضافه شود ؟
چی کم داره ؟ اگه میخوای به کلاسای موجود چیزی اضافه کنی میتونی از Extension Method استفاده کنی و اگرم چیزی در دات نت وجود نداره اما در COM یا Win32 API هست میشه از Interop استفاده کرد

در مورد ابزار هایی مثل آی دی ای نظر خود من ساخت یک آی دی ای جدید است نظر شما در این رابطه چیست؟
قبلا هم گفتم بیهوده است. یه پلاگین میتونی برای VS یا Eclipse یا SharpDevelop درست کن (همه اش به فکر اختراع دوبارۀ چرخی. یکی از اصول مهندسی نرم افزار ، reuse هست؛ این همه شرکت های بزرگ و آدمای حرفه ای خرج میذارن این محصولات رو تولید می کنن ، اون وقت تو به فکر ایجاد دوبارۀ همونایی. البته شک نکن که انجامشون برای یادگیری مفیده)

و در نهایت به نظر شما این پروژه تا چه حد میتواند مفید باشد ؟ تا چه حد می تواند گره ای را باز کند یا فقط یک پروژه بی معنی و بی فایده است؟
فکر کنم مهم ترین قدم برای تو اینه که مشخص کنی چی میخوای ، چون قبلا گفته بودی " قرار هم نیست مشکلی رو حل کنه". اول بدون چی میخوای درست کنی (مثال هایی از D و Maestro هم زدم برات)

xxxxx_xxxxx
دوشنبه 26 اسفند 1387, 18:41 عصر
از DLR استفاده کن. نیاز نیست خروجی برنامه ات مثلا سی شارپ باشه ، با استفاده از DLR خروجی برنامه ات MSIL خواهد بود (مثل IronPython)


منظور CLR هست؟

Mehdi Asgari
دوشنبه 26 اسفند 1387, 19:19 عصر
نه
http://en.wikipedia.org/wiki/Dynamic_Language_Runtime
http://www.codeplex.com/dlr
(چون میخواد مفسری باشه (و احتمالا دینامیک))

Sundown
دوشنبه 26 اسفند 1387, 23:48 عصر
داری میگی نمیخوای با زبان های دیگر رقابت کنی (در واقع فعلا فقط میخوای یاد بگیری) پس نیازی به این همه سوال نیست. شروع کن به طراحی و ساخت زبانت. قبلش کمی تجربه کسب کن. مثلا زیر مجموعه ای از پاسکال یا سی رو (با روش ها و ابزار مختلف. LLVM و Phoenix رو حتما ببین)بله حق با شماست باید ابتدا زبان من بتونه کارهای ابتدایی انجام بده بعد امکانات پیشرفته ای مثل برنامه نویسی چند نخی و امکان نوشتن برنامه برای پردازنده های چند هسته ای رو پشتیبانی کنه


این بحث ربطی به سوالت نداره ولی مایکروسافت نمی تونست کاربران یکی از پرسود ترین زبان هاش رو نادیده بگیره و به همه بگه بیایید سی شارپ یاد بگیرید.آره این مطلب کاملا درسته توی خود سایت مایکروسافت در قسمت معرفی وی بی دات نت نوشته :
Visual Basic Users Cant Be Wrong
پس میبینیم که سینتکس یه زبان چه قدر مهمه. زبانی که استخوان بندی درست و حسابی نداری(منظورم وی بی هست ) فقط به خاطر سادگی در سینتکس شده یکی از پر در آمد ترین زبان های مایکروسافت!

پس زبان من پس از اتمام دارای ویژگی جدید نیست و فقط سینتکس جدیدی داره کار آی دی ای رو هم میذارم برای آخر کار (منطقی هم همینه ) و فعلا مفسر اصلی رو باید بسازم


قبلا هم گفتم بیهوده است. یه پلاگین میتونی برای VS یا Eclipse یا SharpDevelop درست کن (همه اش به فکر اختراع دوبارۀ چرخی. یکی از اصول مهندسی نرم افزار ، reuse هست؛ این همه شرکت های بزرگ و آدمای حرفه ای خرج میذارن این محصولات رو تولید می کنن ، اون وقت تو به فکر ایجاد دوبارۀ همونایی. البته شک نکن که انجامشون برای یادگیری مفیده)من در مورد ساخت پلاگین برای VS اطلاعی ندارم . آیا شما قبلا این کار رو انجام دادید ؟ میتونید یه منبع آموزشی برای این کار معرفی کنید ؟


کتابخانه دات نت چی کم داره ؟ اگه میخوای به کلاسای موجود چیزی اضافه کنی میتونی از Extension Method استفاده کنی و اگرم چیزی در دات نت وجود نداره اما در COM یا Win32 API هست میشه از Interop استفاده کردمنظورت این نیست که کتابخانه دات نت بی عیب و نقص هست و هیچ کمبودی نداره ؟
مثلا توی دات نت با استفاده از تابع BinarySearch در کلاس Array میشه درون یک آرایه با استفاده از الگوریتم دودویی جستجو کرد اما از اونجایی که برای جستجو توی یک آرایه به صورت دودویی باید حتما آرایه Sort باشد این تابع اینکار را انجام نمی دهد و شما مجبورید قبلا از استفاده از این تابع با تابع Sort در همون کلاس آرایه رو Sort کنید. ما میتونیم یه تابعی بنویسیم که این دو کار رو با هم انجام بده.( فقط برای مثال این رو گفتم از این موارد در دات نت زیاد هست مانند توابع مربوط به IO و کار با فایل ها و دیتابیس ها ) گاها توابعی وجود دارند که برای اجرا نیاز به 5 یا 6 خط پیش نیاز دارند


این سوال با حرفات در تضاده. فعلا نیازی نیست زبانت چیز جدیدی داشته باشهبه هر حال که چی ؟ بالاخره این زبان در آخر باید حتی اگه شده یک توانایی منحصر به فرد داشته باشه و باید از الان فکری به حالش کرد.

در مورد DLR هم باید بگم که خروجی برنامه من هم IL هست توی این شکی نیست ولی ابتدا کد های زبان من به مثلا سی شارپ یا وی بی دات نت تبدیل میشود و بعد کامپایلر اون زبان میاد و این کد ها رو تبدیل بهIL میکنه و کاربر حتی حس هم نمیکنه که مثلا سی شارپ داره برنامه اش رو میسازه ! این کار ها در پشت صحنه انجام شده و خروجی برنامه صد در صد MSIL هست. چون اگر بخوایم مستقیم کدمون رو به IL تبدیل کنیم باید ابتدا چند سال IL رو یاد بگیرم بعد توش تجربه کسب کنم. چندین و چند برنامه قد و نیم قد باهاش بنویسم و اون وقت شاید بشه این کار کرد اما این کارها در توانایی من نیست

یه مطلب رو هم بگم : من میدونم که ساخت یک کتابخانه چه دردسری داره و قدم گذاشتن توی این راه چه قدر خطرناکه اما غیر ممکن نیست و مثلا اگر صد نفر جمع شوند و هرکدوم صد تابع و کلاس بنویسند و مثلا هر کدوم طی 4 ماه بتونند 500 تابع رو بنویسند ( یعنی روزی 4 تا تابع مفید و قابل اطمینان و امتحان شده و عیب یابی شده و بی عیب و نقص با در نظر گرفتن تمام حالات خاص و ... ) میشه 50000 تابع که شاهکاره و قطعا اثری جاودان خواهد شد ولی فعلا منظوره من توی این زبان این نیست
ولی بگم که مثلا مایکروسافت نیومد از کتابخانه جاوا استفاده و خودش یکی ساخت ولی باید شرایط رو هم در نظر گرفت

صمیمانه از همه دوستان که وقت گران بهای خود را در اختیارم گذاشتند تشکر میکنم
______________________________
کسی آمد که حرف عشق رو با ما زد------دل ترسوی ما هم دل به دریا زد
به یک دریای طوفانی دل ما رفته مهمانی
چه دوره ساحلش از دور پیدا نیست------یه عمری راهه و در قدرت ما نیست
باید پارو نزد وا داد باید دل رو به دریا داد
خودش می بردت هر جا دلش خواست------به هر جا برد بدون ساحل همون جاست

Mehdi Asgari
سه شنبه 27 اسفند 1387, 01:23 صبح
زبانی که استخوان بندی درست و حسابی نداری
لااقل الان گفتن این حرف زیاد درست نیست (حیف که بحث بیشتر در این زمینه آف تاپیکه)

من در مورد ساخت پلاگین برای VS اطلاعی ندارم . آیا شما قبلا این کار رو انجام دادید ؟ میتونید یه منبع آموزشی برای این کار معرفی کنید ؟
من دارم برای یه زبانی پلاگین برای VS توسعه میدم. فقط این کتاب رو مفید پیدا کردم (نویسنده اش هم کیوان نیری ، ایرانیه)
Professional Visual Studio 2008 Extensibility

منظورت این نیست که کتابخانه دات نت بی عیب و نقص هست و هیچ کمبودی نداره ؟
مگه چیز بی عیب و نقص وجود هم داره ؟ هر چی که فکر می کنی کمه با یه کلاس جدید یا یه extension method اضافه کنش

ولی ابتدا کد های زبان من به مثلا سی شارپ یا وی بی دات نت تبدیل میشود....
چون اگر بخوایم مستقیم کدمون رو به IL تبدیل کنیم باید ابتدا چند سال IL رو یاد بگیرم
فکر می کنی ترجمه به سی شارپ راحت تر از ترجمه به IL هست ؟ (این همه Reflection.Emit و Phoenix و کتابای مختلف پس برای چی به وجود اومدن ؟ چند سال... مگه میخوای موشک هوا کنی!


و مثلا اگر صد نفر جمع شوند و هرکدوم صد تابع و کلاس بنویسند و مثلا هر کدوم طی 4 ماه بتونند 500 تابع رو بنویسند
احتمالا تا حالا حرفه ای کد ننوشتی. اصلا این دیدت غلطه. مایکروسافت رو با 100 نفر آدم معمولی یکی می کنی ؟ (آیا حاضری همون مزایا وحقوق و .. رو به اون 100 نفر بدی ؟)
روزی 4 تابع ؟ شوخی می کنی. جمع و تفریق که نمی نویسید ؛ این توابع و کلاس ها قراره در توابع و کلاس های دیگر reuse بشن ، نیاز به تست و مستندات دارن ، باید یه طراحی درست و حسابی انجام بشه ، ....
خیالت رو راحت کنم ، قریب به 95 درصد DSL ها و زبان های آینده روی JVM یا CLR بنا میشن (حالا هرکی میخواد بره چرخ رو از نو اختراع کنه) (نمونه از اواخر: Boo ، FSharp ، Scala ، Concurrent Basic ، Maestro ، Clojure و ... . از زبان های جدید چندتاشون اینطور نیستن ؟ { منظور از جدید از 2000 به بعده } )

pesar irooni
سه شنبه 27 اسفند 1387, 01:51 صبح
مثلا من در وی بی دات نت خصوصیتی را نمیبینم که زبان های دیگر از حل آن عاجز مانده باشند ؟
همونطور که همکار سایت هم گفت VB یه زبان ریشه داره و نمیشه به راحتی ازش گذشت و برنامه نویسایی که با این زبان اخت گرفته بودند رو رها میکردند.

اما این زبان با وجود زبان هایی مثل سی شارپ و جاوا متولد شد بی آنکه برتری بر آنها داشته باشد ؟
اگه میخوای اشخاصی هر چند کم با زبانت برنامه بنویسند باید براشون احترام قائل بشی و یک چیز جدید و نه لزوما برتری خاص براش بسازی. مثلا میتونی کارهایی رو که زبانهای دیگه انجام میدند ولی سخت به نظر میرسه رو تغییر شکل بدی و کاربرپسند کنی.

در مورد زبان باید بگویم که در واقع یک مفسر است و نه یک کامپایلر

به نظر من کار کاملا درستیه. باید اول یه هسته یا یه چیز کوچیک بسازی. بعد از اینکه تونستی تمام نیازهات رو برطرف کنی میتونی یه کامپایلر کامل بنویسی.

و مهمترین مسئله این است که در زبان های موجود خلا چه چیزی احساس میشود که ما بتوانیم در این زبان جدید این خلا را پر کنیم؟
راستش من چیز زیادی راجع به برنامه نویسی نمیدونم ولی شاید توابعی که در زمینه کمبودهای زبان فارسی باشه به درد بخوره. مثلا error هایی به زبان فارسی و یا چیزه دیگه.(اگه مزخرف گفتم از همه معذرت میخوام، من برنامه نویس نیستم)

اما جدا از تمام این مسائل در وهله اول شما فقط سعی کن یه زبان مشابه با زبانهای دیگه بسازی که اگه اینکار رو بکنی یعنی تمام کار رو انجام دادی. و بدون سخت ترین مرحله کار شروع کردن کاره!

Sundown
سه شنبه 27 اسفند 1387, 01:57 صبح
فکر می کنی ترجمه به سی شارپ راحت تر از ترجمه به IL هست ؟ (این همه Reflection.Emit و Phoenix و کتابای مختلف پس برای چی به وجود اومدن ؟ چند سال... مگه میخوای موشک هوا کنی!
آره به نظر من ساده تر هست. چون کد ها به یه زبان سطح بالا تبدیل میشن و خودمون رو درگیر زبان سطح پایینی مثل IL نمیکنیم و سختی های این کار رو به #C واگذار میکنیم. علاوه بر اون من سالها با سی شارپ کار کردم و با زیر و بم هاش آشنا هستم حداقل برای من تبدیل هر کدی حالا به هر زبانی که باشه به #C خیلی راحت تر از زبانی هست که بخوام تازه اون رو یاد بگیرم. مثل این که شما بری #F یاد بگیری و یک ماه بعد بخوای یه زبان Shell مثل همین براش درست کنی!؟ خوب معلومه کارت خیلی سخت خواهد بود
منظورم از چند سال... کسب مهارت و تجربه توی IL بود وگرنه یادگیری یه زبان توی چند هفته ممکنه ولی مهارت طی زمان طولانی به دست میآد و میانبری براش وجود ندارد



احتمالا تا حالا حرفه ای کد ننوشتی. اصلا این دیدت غلطه. مایکروسافت رو با 100 نفر آدم معمولی یکی می کنی ؟ (آیا حاضری همون مزایا وحقوق و .. رو به اون 100 نفر بدی ؟)
:متعجب:اول من منظورم آدمای معمولی نبود و توی همین ایران آدمایی هستن که از آب دیده باشند و بتونند این کار رو انجام بدن
دوما گفتم که اصلا منظور من این نیست که توی این پروژه بیام کتابخانه رو با اون افراد بسازم چون حتی فکر کردن به مبارزه با کتابخانه های حتی کوچیک موجود هم بدون مساعدت و حمایت دولت چه از نظر مالی و ...
و بدون یک مدیریت کاملا حرفه ای و با تجربه یک دیوانگی محض است. مطلب بالا رو برای اطلاع گفتم و هیچ فکری در این باره فعلا توی ذهن ندارم باور کن

در مورد سینتکس زبان نظری ندارید ؟ چه شکلی باشه راحت تره ؟ منظورم عادت شما نیست که بگید مثل سی باشه ! منظور یه سینتکس جدید و راحت تر هست

reza saam
سه شنبه 27 اسفند 1387, 03:21 صبح
نوشتن یک زبان برنامه نویسی مستقل (از صفر) کار بعیدی نیست و اگر تواناییش رو داشته باشید بسیار عالی و قابل ستایش هست و افتخاری خواهد بود برای تمامی ایرانیها
اما نکته قابل توجه اینه که شما اگه قراره یه زبان برنامه نویسی ساده مثل بیسیک رو پیاده کنید،برای نوشتن یه کامپایلر با حداقل امکانات برای زبانی مثل basic ، به تسلط متوسط به بالا به زبانهای مثل c و اسمبلی نیاز دارید...
درضمن اگه بخواین یه زبان حرفه ای بسازید؛کار یک شبانه روز نیست،شاید چندین سال با حوصله روی این موضوع کار کنید تا نتیجه بگیرید،برای زبانهای پیشرفته اطلاعات پیشرفته ای هم نیاز خواهید داشت مانند برنامه نویسی برای سخت افزار و cpu های مختلف،محاسبات پیچیده ریاضی و....
این کار یک اراده قوی میخواد و شما هم دارید (وگرنه این تاپیک رو نمیزدید) از صمیم قلب براتون آرزوی موفقیت میکنم
درضمن سینتکس زبان پاسکال از همه راحت تره،درضمن چون اکثرا تو دانشگاه تدریس میشده (یا میشه!) خیلیها باهاش سروکله زدن و چیزایی ازش بلدن... فقط سعی نکن لغت های فارسی استفاده کنی، چون نه کسی حوصله داره فارسی یاد بگیره نه همه کامپیوترا کیبورد فارسی دارن...

Sundown
سه شنبه 27 اسفند 1387, 04:27 صبح
اما نکته قابل توجه اینه که شما اگه قراره یه زبان برنامه نویسی ساده مثل بیسیک رو پیاده کنید،برای نوشتن یه کامپایلر با حداقل امکانات برای زبانی مثل basic ، به تسلط متوسط به بالا به زبانهای مثل c و اسمبلی نیاز دارید...

خیر . من نمیخوام کامپایلر طراحی کنم در این صورت کارم خیلی خیلی سخت میشد. من قصد طراحی یه مفسر در چارچوب دات نت را دارم



درضمن سینتکس زبان پاسکال از همه راحت تره،درضمن چون اکثرا تو دانشگاه تدریس میشده (یا میشه!) خیلیها باهاش سروکله زدن و چیزایی ازش بلدن... فقط سعی نکن لغت های فارسی استفاده کنی، چون نه کسی حوصله داره فارسی یاد بگیره نه همه کامپیوترا کیبورد فارسی دارن...

بله صد در صد فارسی استفاده نمیکنم
اما در مورد سینتکس پاسکال باید روش فکر کنم و بقیه هم نظر بدن. چون خودم خیلی با سینتکس پاسکال موافق نیستم خیلی خیلی بد قلق است مخصوصا begin و end خیلی اذیتم میکنه به هر حال باید دید نظر بقیه چیه ؟ باید دید بقیه هم با پاسکال موافقند یا نه ؟

Mehdi Asgari
سه شنبه 27 اسفند 1387, 10:33 صبح
در مورد سینتکس زبان نظری ندارید ؟ چه شکلی باشه راحت تره ؟

اما در مورد سینتکس پاسکال باید روش فکر کنم و بقیه هم نظر بدن

باید دید بقیه هم با پاسکال موافقند یا نه ؟
من نمی دونم چه اصراری داری بقیه نظر بدن ؛ تو میخوای یک زبان ایجاد کنی ، ما باید نظر بدیم ؟
این برمی گرده به نداشتن هدف مشخص. اصلا نمی دونی چی میخوای.
مثلا طراح Boo می خواست ایجاد DSL و کلا language oriented programming رو بیاره به سطح زبان (با سینتکس پایتون و سی شارپ که خودش بیشتر با اونا حال می کرد)
یا طراح Maestro هدفش این بود که برنامه نویسی با مدل actor رو (ارسال پیام به صورت ناهمزمان - مثل Erlang) بیاره تو دات نت (و با سینتکس خانوادۀ سی)
تو باید خودت راحت باشی با اون زبان.
فقط هم اینا نیست ؛ باید علم زیادی دربارۀ زبان های برنامه نویسی داشته باشی و قادر به تصمیم گیری باشی (مثلا ایا زبان تو Closure ها رو ساپورت خواهد کرد ؟ (حالا با هر سینتکسی ). )

Sundown
چهارشنبه 28 اسفند 1387, 06:14 صبح
من نمی دونم چه اصراری داری بقیه نظر بدن ؛ تو میخوای یک زبان ایجاد کنی ، ما باید نظر بدیم ؟



این برمی گرده به نداشتن هدف مشخص. اصلا نمی دونی چی میخوای.


خیلی ممنون از توجهتون ولی من فکر میکنم شما این طور به من نگاه میکنید :
فکر میکنید شب خوابیدم صبح بیدار شدم گفتم خوب دیگه حالا که بیکارم پس بیام یه زبان برنامه نویسی درست کنم بخندیم !
این که همش میگید هدف نداری یا نمیدونی چی میخوای درست کنی فقط یه همچین تعبیری میشه ازش برداشت کرد ولی هدف من کاملا معلوم و مشخصه و برای اینکه کاملا روشن بشید دوباره عرض میکنم :
هدف من ساخت یک مفسر فقط به عنوان سرگرمی و نه به بزرگی سی شارپ و جاوا و ... ( مثل لینوس توروالدز ) است که یک سری کد رو در قالب یک سینتکس جدید به یک زبان سطح بالا مثل سی شارپ تبدیل کنه و کدهای سی شارپ رو در فایلی ذخیره کنه و سپس کامپایلر سی شارپ رو صدا بزنه و برنامه به IL تبدیل بشه و البته قابل اجرا. در مراحل ابتدایی ساخت این زبان که احتمال می دهم سه تا چهار ماه طول بکشه این زبان ویژگی جدیدی نسبت به زبان های دیگر ندارد و فقط ( البته به نظر من ) میتواند با سی برابری کند اما پس از پایان مراحل اولیه به مرور امکاناتی به این زبان اضافه میشه که شاید حتی در زبان های دیگر نیز موجود نباشد. چون کدهای این زبان در نهایت به IL تبدیل میشه میشه گفت یک زبان جدید تحت دات نت است و قادر است از تمام کلاس ها و توابع موجود در FCL استفاده کند که این امتیاز بزرگی برای این زبان محسوب میشود. مفسر اصلی زبان در زبان سی و ابزارهای آن مانند IDE و ... در یک زبان سطح بالا مانند جاوا یا سی شارپ نوشته خواهد شد. مهمترین مسئله در این پروژه تبدیل کدهای زبان به کدهای سی شارپ است که حدود 3 ماه است که شب و روز و روز و شب در خواب و بیداری روی آن فکر میکنم و تقریبا تمام ابعاد آن را در نظر گرفته ام و امروز عقیده دارم این کار شدنی است
و چون یک تنه نمیتوان از پس چنین پروژه ای بر آمد خواستم نظر شما اساتید محترم را هم درباره این موضوع بدانم.
این بود هدف من .

باز هم صمیمانه از راهنمایی ها و نظرات شما کمال تشکر را دارم:قلب:
__________________________
اگر برنامه ای را که در نوشتن آن تسلط دارید 10 بار بنویسید 10 مطلب جدید یاد میگیرید
( ریچارد استالمن یکی از پیشگامان جنبش اپن سورس )

asefy2008
شنبه 08 فروردین 1388, 00:51 صبح
سلام دوست عزیز شما چه اصراری داری از دات نت کمک بگیری(البته من خودم دات نت کار می کنم )یه زبانی ایجاد کن که روی اکثر سیستم عامل ها کارکنه .(سخته ولی به زحمتش می ارزه )
یه چیزی رو به خاطر داشته باش چیزی که سریع نوشته بشه نمی تونه موفق باشه(سریع به دست بیاد سریع هم از دست میره) ولی اگر شما یه چیزی رو از پایه محکم بسازی امکان نداره براش مشکلی پیش بیاد به عبارتی شکست های پیاپی در وسط راه بهتر از شکست در انتهای راه(لااقل نظر من که این هست)
یه چیز دیگه تا به حال از خودت پرسیدی چرا سی شارپ ،وی یی موفقن؟ چون یه غول مثل مایکروسافت از اون ها حمایت می کنه.شما برای اینکه زبانت موفق باشه به چیزی بیشتر از سرمایه احتیاج داری.
یه چیز دیگه این رو هم در نظر داشته باش که غول های زبان با چندین هزار برنامه نویس ومیلیاردها دلار سرمایه و مهمتر از همه برنامه های چند ساله در صدد ایجاد و بهبود زبان های خود هستند(میدونم قصد شما رقابت نیست ولی آخرش که چی یا کاری رو شروع نکن یا اگه کردی تا آخرش برو)
در ضمن شما برای نوشتن یه زبان خوب به چندین سال وقت و مهمتر از همه تجربه نیاز دارید
اگه زیاد چرت وپرت گفتم منو ببخشید آخه تازه کارم.

Sundown
شنبه 08 فروردین 1388, 21:09 عصر
خیلی ممنون



سلام دوست عزیز شما چه اصراری داری از دات نت کمک بگیری

برای ساخت یک زبان قدرتمند یکی از مهمترین قدم ها ساخت یک کتابخانه هست.کتابخانه ای قوی با هزاران تابع و کلاس. و مهم تر از اون امتحان هر تابع و همچنین در نظر گرفتن تمام حالتهای خاص و هزاران نکته دیگر...
این کار توسط 100 نفر کاری است که چند سال طول میکشد ولی من یک نفر هستم و عملا این کار به دور از عقل و غیر ممکن هست. به گفته ی یکی از دوستان اکثر غریب به اتفاق زبان های آینده بر روی CLR یا JVM پیاده میشوند و این گویای موضوع هست



یه زبانی ایجاد کن که روی اکثر سیستم عامل ها کارکنه .(سخته ولی به زحمتش می ارزه )

هر زبان برای این که روی سیستم عامل دیگری کار کند باید کامپایلر مربوط به اون سیستم عامل طراحی بشه
مثلا کدهای کامپایلر سی تحت ویندوز و کامپایلر تحت لینوکس در بعضی قسمت ها با هم فرق دارند تا بتونند برنامه ای برای همون سیستم عامل طراحی کنند
البته زبان من چون خروجی اش IL هست از این بابت مشکلی ندارد و خروجی اش روی هر پلتفرمی که CLR نصب باشه اجرا میشه



در ضمن شما برای نوشتن یه زبان خوب به چندین سال وقت و مهمتر از همه تجربه نیاز دارید

چند سال وقت ؟!
زبان من کدش رو به سی شارپ تبدیل میکنه و بعد هم به IL. چند سال لازم نیست و طبق پیشبینی انجام شده 4 ماه کار شبانه روزی برای ساخت مفسر اصلی بیشتر لازم نیست
تجربه : بالاخره با تجربه ها هم از یه جایی شروع کردند دیگه

___________________
ساخت مفسر رو حدود یک هفته هست که شروع کردم و نتایج به دست آمده عالی هست و پروژه دقیقا بر اساس همون چیزی که فکر میکردم پیش میرود