# Native Code > برنامه نویسی در 6 VB > گفتگو: یا بی خیال VB6 بشید یا ...

## IamOverlord

سلام دوستان.

*از دادن نظرات منفی از جمله : چرخ رو دوباره اختراع نکنید - این کار ایرانیها نیست و..... اکیدا خودداری فرمایید.*

می دونید که بعد از VB6 مایکروسافت دیگه نسخه ی Native این زبان رو ادامه نداد و رفت سراغ VB.net، چیزی که مسلما خیلی ها بیش از VB6 دوست ندارنش، وگرنه هنوز با VB6 کار نمی کردن!
خوب من می گم این همه تلاشی که در نوشتن برنامه با VB6 می کنید، چرا از جهت آینده نگری تلاش نمی کنید؟!
اگه هنوز VB6 رو دوست دارید، چرا خودتون نسخه ی 7 اش رو نمی سازید؟
نه این که تغییرش بدید و ۴ تا کامپوننت بهش اضافه کنید، چون فایده ای نداره، بلکه یه پروژه ی Open Source راه بندازید و از پایه شروع کنید به کدنویسی و گسترش زبان، حداقل برای خودتون!
نگید که نیروی کار نیست، بیا من خودم نیروی کار! یا نگید که بیهوده است، از VB6 که باهوده تره... :دی
یا بی خیال VB6 بشید یا بیایید این کارو با کمک هم انجام بدیم...
خیلی کار ها هست که می شه کرد... می شه به طور کاملا شئ گرا ساختش... می شه پارادایم های جدید برنامه نویسی رو به مرور زمان بهش اضافه کرد... می شه کاری کرد که جلوی زبان های به روز کم نیاره و ...
ببینید نوشتن زبان برنامه نویسی کاری نداره، نوشتن از راه اصولی و تروتمیز، یه مقدار کار تیمی می خواد!!!
ضمنا نگید که نمی تونیم و فلان شرکت ده هزار تا نیروی کار داره و ... آخه از اون ده هزار تا همش هزارتاشون بازار یابن، هزار تاشون تست می کنن و هزار تاشون چای میارن... :دی!
Visual Basic Classic 7
...نظرتون چیه؟

*وضعیت فعلی پروژه:*
عنوان فعلی: *Hypersia*
اعضای فعلی تیم:
*m.4.r.m* (مدیر پروژه)
*Mohammad Salehi*
...
(صبر کنید تا بررسی کنم...!)

----------


## SlowCode

سلام
من موافقم و هر کمکی از دستم بیاد انجام میدم.

----------


## ho3ein.3ven

سلام . ایده واقعا جالبی هست.
فقط اگه میشه یکم بیشتر توضیح بده که چطوری میشه نوشتش . باید با اسمبلی نوشت ؟

----------


## abidana

اگر پایه اید پس اسمش را vb 7 نگذارید تا فردا پس فردا به دادگا ه های بین المللی کشیده نشید و اسم مایکروسافت راگنده تر نکنید
اگر حتی بتوانید یه چیزی تو مایه های Qbasic درست کنید گام خیلی خیلی بلندی برداشته اید

----------


## m.4.r.m

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

----------


## IamOverlord

سلام.
در مورد اسم فقط نظرمو گفتم و اصلا اصراری ندارمو فعلا زیاد مهم نیست این قضیه.
در مورد این که باید با چی و چه طوری نوشتش...
اولا که یه زبان برنامه نویسی رو تقریبا با هر زبان برنامه نویسی می شه نوشت. چرا؟ چون که کار یه کامپایلر دریافت رشته ی ورودی (Source Code) و تبدیل اون به رشته ی خروجی (exe یا asm یا ...) با کمک توابع پردازش رشته و ... هست.
این زبان برنامه نویسی رو می شه با همین VB6 نوشت، و می شه به طوری غیر اصولی، سریع تموم کرد. اما اگه بخوایم گسترشش بدیم خودمون گیج می شیم!
کامپایلر 3 تا فاز داره: تحلیلگر لغوی (Lexical) - تحلیلگر نحوی (Syntax) - تحلیلگر معنایی (Semantic)
تحلیلگر نحوی شروع می کنه به تجزیه ی کد و تولید کد میانی، به کمک تحلیلگر لغوی که کارش دریافت از ورودیه، در بخش تحلیلگر معنایی هم که فاز آخر هست، کامپایلر یه سری ارور ها رو می تونه گزارش کنه مبنی بر این که مثلا نوع string نمی تونه byval باشه...
ضمنا یه Source Code برای نمونه می ذارم، از یه کامپایلری که یکی با VB6 طراحی کرده، خیلی ساده هست، اما خیلی از اصول توش رعایت شده که در موردش به امید خدا بحث می کنیم. اول کد این رو بفهمیم بعد بریم سراغ کد خودمون که همه چی از حالت بحث های حاشیه ای در بیاد.
ضمنا در مورد اولین تجربه ی خودم می گم:
وقتی داشتم Assembly رو یاد می گرفتم می دیدم که طرف تو کتابش یه تکه کدهایی رو هی تکرار می کنه. اون موقع متوجه نشدم که تو Assembly می شه از Macro استفاده کرد، به خاطر همین تصمیم گرفتم یه برنامه بنویسم که مثلا وقتی توش می نویسم Print اون ۱۰ خط دستور Assembly مورد نظر رو جایگزین کنه... تا این که تو مدرسه ازمون واسه سمینار پروژه خواستن و کار کشید به طراحی یه زبان برنامه نویسی فارسی. چون تنها بودم حوصله ام سر می رفت تنهایی کد بزنم، کار کشید به روزهای آخر، پوستر طراحی شده بود ولی هنوز خود کامپایلر طراحی نشده بود! آخر سر به خاطر آبروم که شده شب تا صبح نشستم کارو انجام دادم به طور خیلی خیلی ساده ای ولی انجام دادم، موقع سمینار هم سر کامپیوتر پروژه ام رو گسترش می دادم! حتی یه جایی یکی با بچش وسط کد نویسی اومد گفت پروژه رو ارائه بده، ما هم ارائه دادیم Error داد ضایه شدیم رفت!!! چون وسط کدنویسیم بود... هر کی هم می اومد می گفت تقلبه و رفتی C رو فارسی کردی و مفسره و ...، در صورتی که من یه راست کد Assembly رو تولید می کردم و بهشون نشون هم می دادم و فایل exe ی تولید شده رو هم نشون می دادم و Run می کردم.
خلاصه فهمیدم زبان برنامه نویسی فارسی رو بی خیال و از اون موقع موندم تو کف این که یه بار دیگه کامپایلر بسازم اما بهتر و اصولی تر و یه سری کتاب رو لاشو ورق زدم...
به نظرم یکی از بهترین کامپایلر هایی که می شه نوشت همین نسخه ی هفتم VB Classic هست که خودمون رو از VB6 خلاص کنیم و به بقیه انگشت نشون بدیم :دی (انگشت پیروزی)!
کد این Libry Compiler رو ببینید که بفمید می شه... این یه نفر با تشکر از دو نفر تونسته، حالا ما نمی تونیم با کمک هم بتونیم؟!

----------


## l4dl4d

دوستان یک سورس عالی بود برای شروع که تقریبا میتونم بگم سورس وی بی 6 است یکم غیر حرفه ای تر امکان برنامه نویسی و شی گرایی هم داره
به زبان خود vb6 هم است ولی مشکل اینه که دانلودش کردم ولی حالا باز نمیشه چون کامل دانلود نمیشه
اسمش Ace Programming Language بود و میدونم که از یک سایت ایرانی هم دانلودش کردم ولی حالا پیداش نمیکنم
اگه کسی داره لطفا بزاره



> Ace Programming Language

----------


## IamOverlord

تو لیست زبان های برنامه نویسی Wikipedia این هست: Ace DASL
این لینک هم که به Java مربوطه؟! : Build Java apps with Sun's Ace programming language
ببینیدبعد از VB6 یه عالمه Basic دیگه هم دادن، اما ما چیز خیلی متفاوتی نمی خوایم، می خوایم شبیه VB6 باشه، IDE اش، Syntax اش، اما با یه تغییراتی که باعث به روز تر شدنش باشه و خودمون رو از این VB6 خلاص کنیم و اونو گسترش بدیم اون جور که خودمون می خوایم، طوری که دیگه دلیلی برای استفاده از VB6 نباشه، دیگه نیازی به MSVBVM60.DLL نداشته باشیم و حتی اگه این DLL تو سیستم طرف نبود برنامه ی ما بتونه اجرا بشه...

----------


## N30TheM4TRIX

سلام
فکرهای خوب و بزرگی در سر دارید اما فکر نمی کنید استفاده از زبانهایی مثل دلفی یا سی بهتر باشه؟
احتمالاً (حتماً) یادگیری این زبان ها کمتر از ساخت (گسترش) یک زبان هستش.

موفق باشید.

----------


## l4dl4d

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

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

----------


## l4dl4d

در ضمن دوست عزیز برای فایل dll ی که گفتین میتونیم VB Runtime 6.0 رو تو پکیج نصب بزاریم تا مشکلی پیش نیاد

----------


## IamOverlord

> سلام
> فکرهای خوب و بزرگی در سر دارید اما فکر نمی کنید استفاده از زبانهایی مثل دلفی یا سی بهتر باشه؟
> احتمالاً (حتماً) یادگیری این زبان ها کمتر از ساخت (گسترش) یک زبان هستش.
> 
> موفق باشید.


سلام دوست عزیز.
سوالی که شما پرسیدید، سوالیه که بارها و بارها روش بحث شده و نتیجه اش هم واضحه، هنوز خیلی ها VB6 رو دوست دارن.
ضمنا این که بگیم Pascal بهتره، Basic بهتره یا C کار درستی نیست.
می بینید که هنوز هم Delphi گسترش داده می شه،
هنوز هم ++VC گسترش داده می شه،
و هنوز هم Basic گسترش داده می شه...
مسئله ی ما انتخاب یک زبان برای یادگیری نیست، مسئله ی ما اینه که محیط برنامه نویسی دلخواه خودمون رو داشته باشیم، و مطمئنا اون چیزی که می خوایم بهش برسیم بهتر و آینده دارتر از VB6 ایه که سال 1998 اومد!!!

----------


## IamOverlord

> ...
> در ضمن دوستان یه سوال داشتم که تالاری نبود توش طرح کنم اینه که من میخوام یه سیستم عامل با ویبی بسازم و کامپایل شد بعدم چطوری رو سیستم نصبش کنم؟
> با تشکر


فایل خروجی شما در VB6 فایل exe ی Windows هست که به DLL های Windows نیاز داره، پس اصولا نمی شه با VB6 یه سیستم عامل واقعی ساخت...

----------


## IamOverlord

> در ضمن دوست عزیز برای فایل dll ی که گفتین میتونیم VB Runtime 6.0 رو تو پکیج نصب بزاریم تا مشکلی پیش نیاد


ولی اگه خواستید با VB6 برنامه ی Setup بسازید چی؟! یا خیلی از برنامه های دیگه که نمی خواید براشون Setup تولید کنید؟! وقتی مایکروسافت دیگه مثل قدیما از MSVBVM60.DLL پشتیبانی نمی کنه؟! و برنامه های VB6 تون با هزارتا مشکل به خاطر به روز نبودن مواجه هستن؟!
ما می خوایم در نسخه ی هفت فایل های اجرایی Stand-Alone تولید کنیم...

----------


## بهروز عباسی

> سلام دوست عزیز.
> سوالی که شما پرسیدید، سوالیه که بارها و بارها روش بحث شده و نتیجه اش هم واضحه، هنوز خیلی ها VB6 رو دوست دارن.
> ضمنا این که بگیم Pascal بهتره، Basic بهتره یا C کار درستی نیست.
> می بینید که هنوز هم Delphi گسترش داده می شه،
> هنوز هم ++VC گسترش داده می شه،
> و هنوز هم Basic گسترش داده می شه...
> مسئله ی ما انتخاب یک زبان برای یادگیری نیست، مسئله ی ما اینه که محیط برنامه نویسی دلخواه خودمون رو داشته باشیم، و مطمئنا اون چیزی که می خوایم بهش برسیم بهتر و آینده دارتر از VB6 ایه که سال 1998 اومد!!!


 درود به همه 
من هم با آقا محمد (*N30TheM4TRIX*) موافق هستم.
و از طرفی حرف شما هم درسته.
منظورم اینه:



> مسئله ی ما اینه که محیط برنامه نویسی دلخواه خودمون رو داشته باشیم


اما نباید فراموش کنیم که ما ها فقط برنامه نویس هستیم و برنامه ها رو برای سیستم عامل های خاصی از جمله ویندوز طراحی می کنیم و توسعه می دیم.
و خط به خط برنامه ما وابسته به استانداردهای تعریف شده در ویندوز هستش، الان هم که ویندوز حسابی در حال تغییر هستش و ممکنه کلاً این سبک برنامه نویسی که وجود داره از بین بره و زبانهایی با قابلیت های جدید جایگزین بشن.
http://narenji.ir/3282
حالا فرض کنیم شما زبان شخصی سازی شده خودتون رو توسعه دادید وقتی با سیستم عامل روز سازگاری نداشته باشه چی میشه؟
بی خود نیست که مایکروسافت دیگه VB6 رو توسعه نمیده .
اینکه مایکروسافت همیشه اینده نگر بوده و چیزهای دور رو با از دست دادن چیزهای نزدیک به دست میاره بر کسی پوشیده نیست شاید پشتیبانی نشدن Vb6 هم به این دلیل باشه که قرار نیست در سیستم عامل های جدید کار کنه!!!
پس -->> برنامه نویس ها باید چشم انتظار کارهای مایکروسافت باشن 
الان مایکروسافت باعث نارضایتی مشتریان و کاربران دلفی شده چگونگی شو در لینک زیر ببین 
https://barnamenevis.org/showthread.php?356713-RAD-Studio-XE3-%D8%A8%D9%87-%D8%B2%D9%88%D8%AF%DB%8C-%D9%85%D9%86%D8%AA%D8%B4%D8%B1-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF!!!!&p=1577694&viewfull=1#post15  77694





> نتیجه اش هم واضحه، هنوز خیلی ها VB6 رو دوست دارن.


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

موفق باشید.

----------


## just4froum

> اینکه مایکروسافت همیشه اینده نگر بوده و چیزهای دور رو با از دست دادن چیزهای نزدیک به دست میاره بر کسی پوشیده نیست


چقدر این جمله با معنا بود.  :تشویق:  :تشویق:  :تشویق:

----------


## IamOverlord

سلام آقای *بهروز عباسی*...




> ممکنه کلاً این سبک برنامه نویسی که وجود داره از بین بره و زبانهایی با قابلیت های جدید جایگزین بشن.


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




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


زبان شخصی سازی شده؟! شاید تاپیک رو درست نخونده باشید، ما نمی خوایم VB6 رو Customize کنیم و چهار تا کامپوننت اضافه کنیم که همچنان مشکل سازگاری باقی بمونه، می خوایم از پایه بنویسیم... این که فایل اجرایی نهایی باید چه ساختاری داشته باشه، چه آسیبی به زبان برنامه نویسی ما می زنه؟! اصلا در آینده می خوایم تبدیلش کنیم به یه زبان Cross-Platform، چه چیزی جلوی ما رو می گیره؟!




> شاید پشتیبانی نشدن Vb6 هم به این دلیل باشه که قرار نیست در سیستم عامل های جدید کار کنه!!!


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




> دوست داشتن دلیل مهمی برای این کار نیست


این که ما چیزی رو دوست داشته باشیم دلیل کافی برای انجام یه پروژه ی تجاری و برای بقیه مردم نیست، اما دلیل کافی برای انجامش برای خودمون هست...




> باید به چیزهایی دیگه ای فکر کرد.


خیلی خوب شد که تو تاپیک شرکت کردید، اگه نکته یا نظر دیگه ای هست بگید...

موفق باشید!

----------


## l4dl4d

دوستان برای STAND Alone کردن فایل مان در ide خودمان  :شیطان: 
میتونیم یک فایل winrar درست کنیم و تو قسمت دستوراتش بگیم که آبجکت ستارت آپ project.exe هست
بعد هم میتونیم به صورت sfx ذخیره بشه
در ضمن مجموعه ی نرم افزاری لورد اتورانش با vb6 نوشته شده و اون هم از چنین تکنیکی برای اجرا شدن استفاده می کنه:
اول کل کامپپوننت ها و رانتایم وی بی رو نصب می کنه بعد اجرا میشه
با تشکر

----------


## IamOverlord

سلام *l4dl4d* عزیز...
درسته که می شه یه کلک هایی زد، اما حقیقتا VB6 همون VB6 ای هست که هست!!! شئ گرا نیست، به یه DLL عتیقه نیاز داره، GUI خیلی قدیمی ای داره، و آینده اش تضمین نیست، مسلما وقتی مایکروسافت تغییری اساسی تو سیستم عاملش نشون بده، VB6 اش هیچ تغییری نمی کنه که عکس العملی نشون بده و اگه همین طوری پیش بره، هیچ آینده ای براش نیست و نباید تلاش بیهوده کرد، باید یه تلاشی کرد که ارزش داشته باشه، مثلا ساخت همین کامپایلر یکی از مفید ترین کارهاییه که می تونیم بکنیم... وگرنه از همین الان باید در این تالارو تخته کرد!!!

----------


## l4dl4d

پس دوست عزیز , IamOverlord , میتونیم از C++‎ استفاده کنیم ولی فکر نکنم کسی بلد باشه (در این حد !)

----------


## IamOverlord

استفاده از ++C فکر خوبیه، ریسکش کم تر از استفاده از سایر زبان هاست. من فکر می کنم به صورت console بنویسیمش بعد با ارسال پارامتر از ide کامپایل کنیم برنامه ها رو. روی کد این Libry Compiler به عنوان مثال بحث کنیم که قضیه روشن بشه. من کد Libry Compiler رو خوندم و تقریبا خیلی جاهاشو متوجه شدم چی کار می کنه. باید مرحله به مرحله بریم جلو، از همین الان قرار نیست شروع به انجام پروژه ی اصلی کنیم، قبلش باید یه چیز خیلی ساده که می شه توش متغیر و Sub و Function تعریف کرد و از چند تا دستور ساده استفاده کرد... درست کنیم، واسه دست گرمی!

----------


## SlowCode

IamOverlord  جان شما خيلي مشتاقي ولي بقيه چطور؟
الان آدماي اينجا 3 دسته هستن: 1- كساني كه واقعا ميتونن كمك كنن ولي وقت ندارن -2- كساني كه هم وقت دارن و هم سوادش رو دارن -3- كساني كه چه مشتاق باشن چه نباشن كمك زيادي نميتونن بكن(مثل خودم :لبخند گشاده!: )

شما خوتون گفتين اين كار بايد گروهي بشه، ولي تا الان كي اعلام آمادگي كرده؟ مخصوصا اونايي كه از گروه دوم هستن؟
اينطور كه بوش مياد كسي نميخواد شما رو همراهي كنه. لطفا دوستان بگن كه ميتونن كمك كنن يا نه تا آقاي IamOverlord هم مشتاق تر بشن.

----------


## abidana

همچین چیزی ممکن نیست که شما بتونید یه سیتم عامل با وی بی بنویسید وبه دون استفاده از ویندوز ان را بالا بیاورید.چون هدف ساخت وی بی این بود که برای ویندوز های 98 .98 یه برنامه نویس قوی با رابط کاربری بالا بسازند
یکی از دوستان من یه سیستم عامل با C++‎ نوشت که برای استفاده از ان سیستم عامل dos را مکمل ان کرد 
نمی دانم شاید اینطوری موفق بشی

----------


## IamOverlord

دسته ی 4 رو جا انداختید: کسایی که هنوز نمی دونن تاپیک هدفش چیه!!!
جناب *محسن ۱۵* باور کنید من اصلا نیاز به افرادی دارم که فقط مشتاق باشن و حوصله داشته باشن و یه مقدار وقت، وگرنه فکر کردید خود من چه قدر بارمه؟! من چون می دونم که می تونیم، فقط بچه ها می ترسن، این قدر پافشاری می کنم. بعضیا یه جوری پست می ذارن که انگار می خوایم یه ضرب تیمو ببنیدیم Visual Studio بسازیم!!! باور کنید آروم آروم می شه پروژه رو پیش ببریم... حتی اگه فعلا کسی پایه نباشه من خودم کارمو می کنم و تاپیک رو هم پیش می برم.
ببینید من الان نیاز به فارغ التحصیل ندارم، نیاز به دانشجو دارم!!!
انجام این کار یه نفری خیلی خسته کنندس! به خاطر همین باید با هم تیمی کار کنیم و یاد بگیریم حتی اگه بلد نیستیم... باور کنید من می ترسم به بچه ها بگم برید Assembly یاد بگیرید، فکر می کنن چی هست...! یا این که بگم برید یه کم در مورد کامپایلر مطالعه کنید، یارو فکر می کنه باید یه کتاب ۱۰۰۰ صفحه ای رو خط به خط حفط کنه! بابا یه کم نترسید فوقش چیو از دست می دید؟! ...

----------


## SlowCode

آقاي abidana كسي اينجا حرف از سيستم عامل نزد كه.

IamOverlord جان من خيلي دلم ميخواد شروع كنم(با اينكه وقتم كمه) و اين سورسي كه گذاشتي رو نگاه كردم ولي هيچي متوجه نشدم. ولي بازم.
اسمبلي هم سختي داره ولي يادگيريش زمان بيشتر و تلاش بيشتر ميخواد، ولي شما بگين ما الان چي كار كنيم؟ اسمبلي رو شروع كنيم؟

----------


## IamOverlord

خوب ببینید الان یه چیز ساده نوشتم (ضمیمه شده) که این کار رو می کنه... اگه مثلا نوشتید dim abc as byte کد اسمبلی معادلشو تولید می کنه:
abc db ?
یا اگه نوشتید dim xyz as dword:
xyz dword ?
قراره همین مدل کارارو بکنیم، یعنی کد منبع رو به کد Assembly تبدیل کنیم... چه کد Assembly ای؟ کد Flat Assembler.
یه مثال خیلی خیلی ساده می زنم... مثلا اگه یارو نوشت a = b چی کار کنیم؟ این کد Assembly ‌رو تولید می کنیم:
mov ax,b
mov a,ax
برید search کنید win32 assembly... برید چهار تا کتاب Assembly انگلیسی و فارسی رو یه نیم نگاهی بندازید... واسه این که بچه ها ترسشون به جای ... بریزه خودمون کد Assembly ‌رو تبدیل به exe نمی کنیم، می دیم به Flat Assembler که یه Assembler خفن برای انواع برنامه نویسی تو Windows و Linux و Dos و ... هست، فقط برید یاد بگیرید که چه طوری برای Windows می شه با Assembly برنامه نوشت که منابع MASM معروف هست...
کسی اگه واقعا مشتاق هست و بلد نیست پیام بده... اگه بلدم هست پیام بده...
ضمنا تو فکرمه یه دامین ثبت کنم و یه وب سایت رسمی راه بندازیم ولی حالا فعلا یه کم صبر کنیم ببینیم کیا پاین...

----------


## IamOverlord

خوب *محسن 15* روحیه ی خوبی داری...
به دوستان توصیه می کنم سعی کنیم اگه یه موقعی به یه دلیلی نتونستیم همکاری کنیم، موقتی کنیمش و در دراز مدت پیگیر قضیه باشیم... رودربایستی هم نداریم اگه یه موقع مخت سوت کشید برو یه دو هفته دیگه بیا فقط بیا!
خوب ببینید یه سری Assembler هست که ما دوباره شروع نمی کنیم برای خودمون Assembler بسازیم و فقط کد Assembly رو تولید می کنیم و می دیم به Assembler:
Flat Assembler
Macro Assembler
Netwide Assembler
Turbo Assembler...
TASM رو که بی خیال... بقیه اش رو هر کدومو که یاد گرفتی اون یکی رو هم می تونی یاد بگیری و آن چنان فرقی با هم ندارن...
در مورد Win32 Assembly منابع خفنی هست که حتی خودمم حال ندارم کامل بخونمشون فعلا! http://www.interq.or.jp/chubu/r6/mas...e/tute001.html
اگه مشکلی داشتید می تونید برید فروم Flat Assembler...
یه نگاهی هم به این لیست بندازید به چشمتون آشنا بیاد دستوراتش...
خوب به امید خدا بعدا یه مثال Win32 Assembly ساده رو تشریح می کنم که ترستون بریزه...

----------


## abidana

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

----------


## IamOverlord

البته اگه یکی از زیر کار در بره سرعت انجام پروژه کم تر می شه، پروژه متوقف نمی شه به امید خدا...

----------


## _behnam_

سلام
اینجا هیچ پروژه ای تا الان به پایان نرسیده!!!
اگه واقعا جدی هست یه جای کنفرانسی مثل یاهو و ... قرار بزارید که هم نخواید واسه یه جمله 1 ساعت منتظر بمونیم و 
هم پروژه متن باز نباشه و هم اینکه بشه یه گروه مطمئن تشکیل داد که به هر عضو وظیفه ای مشخص داد.

----------


## IamOverlord

متن باز بودن پروژه که فعلا مشکلی نیست...
دلیل به پایان نرسیدن پروژه ها هم تا جایی که می دونم فقر اطلاعاتی، بری دیگه برنگردی، به حاشیه کشوندن و کارهای مهم تر بعضی افراد هست...!
ایده ی کنفرانس تو یاهو یا جاهای دیگه ایده ی جالبیه...
page یا group تو facebook چی؟ ...

----------


## _behnam_

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

----------


## m.4.r.m

یا مثلا :

دستور JMP به این شکل استفاده میشود:
*برچسب JMP*
 منظور از برچسب مکانی از برنامه است . در اسمبلی برای اینکه یک نقطه از  برنامه  را علامت بزنیم ، نام برچسب مورد نظر را مینویسیم و برای اینکه  اسمبلر آن را با  یک دستورالعمل اجرائی اشتباه نکند، کاراکتر (:) را در  مقابل آن قرار میدهیم مانند:  :Start
سپس میتوانیم با دستور JMP به آنحا پرش کنیم . 

: Start

:
:

Jmp Start  دقت کنید که بعد از Start ی که در مقابل JMP نوشتیم علامت : قرار نداده ایم .
 این JMP ها از نوع JUMP NERA هستند و نوعی دیگر بنام JUMP FAR هم داریم که بزودی آن را هم یاد میگیریم .
 مثال : برنامه ای که در مثالهای قبل نوشتیم را در نظر بگیرید . اگر ما از  روی دستورالعملهای برنامه با JMP پرشی انجام دهیم هیچکدام از آن کدها اجرا  نخواهندشد:
۱] JMP Quit _
2] mov ax/0E07h
3] int 10h
4] Quit :_
5] int 20h
برنامه از روی سطرهای ۲وَ۳ پرش خواهد کرد .
*ثبات پرچم (Flags)*
 ثبات  پرچم یک ثبات ۱۶ بیتی است که ۱یا ۰ا بودن بیتهای آن نشانه درست یا  نادرست  بودن یک شرط است . مثلا اگر با دستورالعمل خاصی (میخوانیم ) تست کنیم که  آیا ثبات BX مقدار ۰ را دارد ، در این صورت بیت ۶ برابر ۰ میشود و … .
از این ۱۶ بیت فقط ۹ بیت استفاده میشود که به شرح زیر هستند :

۱۶ ۱۵ ۱۴ ۱۳ ۱۲ ۱۱ ۱۰ ۹ ۸ ۷ ۶ ۵ ۴ ۳ ۲ ۱ ۰
* * * * * O D I T S Z * A * P * C
علامت * به معنای بی استفاده بودن است .
 ۱- پرچم نقلی یا (CF) . بیت ۰ در نتیجه اجرای وقفه ها یا بعضی اعمال حسابی تغییر میکند .
 ۲-پرچم توازن (ZF) . بر اساس یک عمل مقایسه ای یا حسابی تغییر میکند . اگر  نتیجه یک عبارت ۰ باشد مقدار ۱ و اگر نتیجه ۱ باشد مقدار ۰ میگیرد.
 ۳-پرچم وقفه (IF) . اگر ۰ باشد هیچ وقفه ای نمیتواند اجرا شود و اگر ۱ باشد میتوان وقفه ها را فراخوانی کرد . و … . ۶ پرچم دیگر را فعلا لازم نداریم بنا براین توضیحی برای آنها ارائه نمیکنیم .
*دستور مقایسه ای CMP*
 برای  مقایسه مقادیراز دستور CMP (مخفف CoMPare) استفاده میکینم . این دستور   مقدار داخل یک ثبات یا متغیر را با مقداری دیگر مقایسه کره و روی ثبات  های  CFو ZFو تاثیر میگذارد . بعد از مقایسه میتوانیم بر حسب وضعیت پرچمها  پرش لازم را انجام دهیم .
 مثلا CMP BX/0 تست میکند که آیا مقدار BX برابر ۰ است یا نه . در صورتی که برابر ۰ باشد ،پرچم ZF برابر ۱ میشود .
با همین دستور CMP میتوانیم کوچکتر،بزرگتر و …. را هم تست کنیم .
*پرشهای شرطی*
برای پرشهای شرطی از دستورهای زیر درست مثل JMP استفاده میکنیم .
*JE/JZ :* اگر محتوای ZF صفر باشد جهش میکند . اگر دو مقداری که مقایسه کرده ایم برابر باشیند پرش انجام میشود.
*JNE/JNZ :* برعکس JZو JEو هستند و اگر ZF یک باشد (بعبارتی دو مقداری که مقایسه کردیم برابر نباشند) جهش انجام میشود.
*JA/JNBE :* اگر محتوای ثبات یا متغیری که مقایسه کرده ایم بزرگتر از عدد مورد نظر باشد پرش انجام میدهد .
مثلا :
mov bh/1
cmp bh/10
ja Dest
 مقدار  BH برابر ۱ است و در سطر دوم تست آن را با ۱۰ مقایسه میکنیم . در سطر سوم  چون BH بزرگتر از ۱ نیست ، پس پرش JA Dest انجام نمیشود .
*JAE/JNB :* اگر بزرگتر یا مساوی باشد ، پرش انجام میشود.
*JB/JNAE:* در صورتی که کوچکتر باشد پرش انجام میشود.
*JBE :* در صورتی که کوچکتر یا مساوی باشد پرش انجام میشود .
مثال :
 میخواهیم برنامه ای بنویسیم که تمام کاراکترهای بین ۱۲۸ تا ۲۵۵ را چاپ کند.

ے  تمام برنامه ساده و روشن است ولی در سطر آخر نکته جدیدی وجود دارد . بعد  از  END نام برچسب Start را آورده ایم . نکته ای که در نوشتن برنامه های  اسمبلی باید  مراعات کنیم اینست که : اگر از برچسبی در برنامه استفاده  میکنیم ، اسمبلر باید  یک برچسب را به عنوان نقطه آغاز کدبرنامه ببیند . به  همین خاطر علاوه بر برچسب  CHARS یک برچسب بنام Start هم در ابتدای برنامه  تعریف کرده و برای اینکه  اسمبلر بداند ما کدام برچسب را برای اینکار  انتخاب کرده ایم ، نام آن را در مقابل END می آوریم ، یعنی END START .
 نکته  دیگر اینکه ، در اسمبلر هر چیزی که بعد از کاراکتر (;) باشد ، توضیح   (Comment) فرض شده و اصلا ترجمه نمیشود . (مثل REM در بیسیک و .. ) .
هر comment  باید در یک سطر جای داده شود و اگر از این مقدار بیشتر بود میتوانیم در سطر بعد
هم یک کاراکتر (;) درج کرده و ادامه توضیحات را بعد از آن بیاوریم .
. MODEL SMALL
. CODE
ORG 100H
START : کاراکتر ۱۲۸ برای شروعMOV CH/128 CHARS :       ; کداسکی را درAL قرار میدهیم تا چاپ شودMOV AL/CH                ;
سرویس ۰Eh برای چاپ کاراکترMOV AH/0EH             ;
اینتراپت 10  ;                   INT 10H
یکواحد به CH اضافه کنINC CH                    ;
مقایسه CH با 255      ;             CMP CH/255
اگر مساوی نباشد به CHARS پرش میکندJNZ CHARS              ;  
INT 20H 
.END START

----------


## m.4.r.m

دوست عزیزم IamOverlord اینی که گذاشتم رو تست بکنید ببینید چیز خوبی به نظر میرسه نه ؟

http://p30download.com/fa/entry/36190/tx/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF%20%D9%86%D8%B  1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20%DA%A9%  D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1%20%D8%B2  %D8%A8%D8%A7%D9%86%20%D8%A7%D8%B3%D9%85
%D8%A8%D9%84%DB%8C

این قسمت هم دوستان مطالعه کنن بدک نیست
http://www.mypersianforum.com/showth...#axzz26Ctao8gp

----------


## m.4.r.m

اینم آموزش چند تا توابع اسمبلی

----------


## abidana

فقط پسورد میخواست

----------


## abidana

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

----------


## IamOverlord

> دوست عزیزم IamOverlord اینی که گذاشتم رو تست بکنید ببینید چیز خوبی به نظر میرسه نه ؟
> 
> http://p30download.com/fa/entry/36190/tx/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF%20%D9%86%D8%B  1%D9%85%20%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%20%DA%A9%  D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1%20%D8%B2  %D8%A8%D8%A7%D9%86%20%D8%A7%D8%B3%D9%85
> %D8%A8%D9%84%DB%8C
> 
> این قسمت هم دوستان مطالعه کنن بدک نیست
> http://www.mypersianforum.com/showth...#axzz26Ctao8gp


سلام دوست عزیز...
دقیقا ما با امثال MASM کار داریم و به درد برنامه نویسی 32 بیتی در Windows می خورن... ولی فعلا باید به طوری کلی با Assembly آشنا شد... بعدا به جای وقفه ها از توابع Win32 API استفاده می کنیم... بعدا هم اگه مایکروسافت خوابی دید می ریم از یه چیز دیگه که گفته استفاده می کنیم...

----------


## IamOverlord

> اینم نمونه البته خیلی ساده
> رنگی کردن کلمات کلیدی و خاصیت تکمیل کد.


داداش دمت گرم!!! خیلی توپ بود، همون که می خواستیم...
نوشتن IDE با Delphi کار عاقلانه ای به نظر می رسه...

----------


## IamOverlord

الان که فکر می کنم می بینم یه سری گزینه ها در اختیار داریم...
نوشتن کامپیالر با VB6 که احتمالا در آینده نیاز به بازنویسیش داریم...
نوشتنش با ++C که ریسکش کم تر از VB6 هست اما در مورد کار با رشته ها تو ++C من که هنوز روش نسبتا ساده ای پیدا نکردم...!
نوشتنش با Delphi که هم کار با رشته ها ساده هست، هم بهتره IDE رو تو Delphi طراحی کنیم، اما کیا Delphi بلدن؟ ...
...

نظر شما چیه؟

----------


## ho3ein.3ven

سلام . به نظر من C++‎ خیلی بهتره چون خیلیا باهاش آشنایی دارن.

----------


## l4dl4d

آخه دوست عزیز C++‎ درسته بهتره ولی کمتر کسی حرفه ای است ولی دلفی آسون تره
در ضمن برای طراحی ide میتونیم از هر زبانی استفاده کنیم چون کار سختی نیست ولی کامپایلر مشکل اصلیه
در ضمن همون پروژه ی ace رو که گفتم کامپایلرش رو میتونیم ارتقا بدیم یا همونو واسه برنامه بزاریم که تو vb نوشته بودنش
ممنونم

----------


## IamOverlord

در مورد IDE به ذهنم می رسه که از همون Delphi استفاده کنیم به کمک دوست عزیزمون *بهروز عباسی*...
اما بهتره خودمون شروع به نوشتن کل کد کنیم، البته از پروژه های دیگه ای هم کمک بگیریم...
کیا موافقن که اول با VB6 شروع کنیم بعد که کارمون راه افتاد کد رو ترجمه کنیم به دلفی؟
کیا موافقن که یه ضرب بریم سراغ دلفی؟
در مورد ++C آشنایی بچه ها زیاده ولی دلفی مناسب تره، نسبت به ++C برای خودمون راحت تره...
اما مسئله ای که هست اینه که می تونید با دلفی کار کنید یا نه؟ می تونیم یه مقدار وقت بزاریم روش مطالعه کنیم...

----------


## m.4.r.m

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

----------


## m.4.r.m

*Win32_PhysicalMemory class*

http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
تو دلفی

----------


## m.4.r.m

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

----------


## IamOverlord

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

----------


## IamOverlord

یه سوالی تو این تاپیک پرسیدم در مورد گذاشتن امکانات انجام پروژه های Open Source در سایت، که دوست خوبمون *MohammadGh2011* گفتن که در این مورد قبلا بحث شده اما یه پیشنهاد خوبی دادن در مورد استفاده از نرم افزار RaidCall...
نظرتون چیه؟...

----------


## IamOverlord

تو RaidCall گروه ساختم...

اسم گروه: VB Classic 7
ID گروه: 5071035

----------


## m.4.r.m

عزیزان در بچه های گروه اسمبلی سایت هم میتونیم کمک بگیریم چند نفر که آشنا به کد نویسی هستن . اگه موافق بودین دعوت کنیم

----------


## l4dl4d

دوستان نظرتون در مورد سایت پشتیبانی واسه vb7 classic چیه ؟؟
میتونیم تو رزبلاگ یکی بزنیم در ضمن یه دامنه ی خوب هم هست رایگانه : 
cydots.com
مثلا vb7-classic.au.ms
حتی میتونیم خودمون سایت رو طراحی کنیم بعد رو هاست بریزیم و به رزبلاگ وصلش کنیم
با تشکر

----------


## l4dl4d

دوستان اگه بخواین هم یه چت روم اختصاصی دارم هم انجمن که اونجا بحث رو ادامه بدیم 
تصمیم با خودتونه
با تشکر

----------


## m.4.r.m

به نظر بنده وب سایت موقعی باید تاسیس بشه که کار واقعا راه افتاده و 50 درصد کار رو انجام دادیم . در مورد انجمن هم همینجا خوبه فقط یه قسمت باید درخواست کنیم برامون درست کنن و خصوصی باشه اینطوری خوب نیست ؟

----------


## IamOverlord

انجمن که همین جا خوبه، RaidCall هم که هست،
در مورد کمک گرفتن از بخش Assembly هم موافقم،
یه وقتی قرار بذارید با هم بریم RaidCall... من که هر وقت باشه پایم...

----------


## IamOverlord

سایت و دامین و این کاراش با من...
من قبلا برای خودم از ModiranHost گرفتم... با توجه به قیمتش و امکاناتش سرویس خیلی خوب و مناسبیه... اما همون طور که دوستون *m.4.r.m* گفت طراحی سایتو بذاریم یه کم بگذره بعد...

----------


## IamOverlord

قبلا گفتم که یه مثال می زنم...

خوب برنامه ی Hello World که ۱۶ بیتی باشه در FASM به این شکل هست که احتمالا اکثرتون دیده باشین:
format MZ
entry .code:start
segment .code
start:
mov ax, .data ; put data segment into ax
mov ds, ax    ; there, I setup the DS for you
mov dx, msg   ; now I give you the offset in DX. DS:DX now completed.
mov ah, 9h
int 21h
mov ah, 4ch
int 21h
segment .data
msg db 'Hello World', '$'
format mz مشخص می کنه که برنامه ی ما فایل exe ی ویندوزی نیست و از نوع MZ Executable در Dos هست و از وقفه ها استفاده می کنه...
entry .code:start مشخص می کنه که نقطه ی ورودی برنامه ی ما برچسب start در سگمنت code هست...
segment .code مشخص می کنه که داریم سگمنت کد رو می نویسیم...
start: برچسب start برنامه هست...
segment .data سگمنت data رو تعریف می کنه که اطلاعاتمون اون جا هست... که آرایه ی msg از نوع byte حاوی رشته ی پیاممون که با $ خاتمه پیدا کرده هست...
int 21h هم وقفه ی ۲۱ در مبنای ۱۶ رو صدا می زنه که وقفه ی DOS هست با یه عالمه سرویس که ثبات ah مشخص می کنه کدوم سرویس رو می خوایم... مثلا سرویس 9 در مبنای ۱۶ سرویس چاپ پیامی هست که آدرس متغیر مربوط به پیام در dx قرار می گیره... و سرویس 4c در مبنای ۱۶ برنامه رو خاتمه می ده...

اما برنامه ی Hello World که Win32 ای باشه در FASM به این شکل هست:
format PE GUI
include 'include\win32a.inc'
invoke MessageBox,0,hellomsg,hellolb,MB_OK
invoke ExitProcess,0

hellomsg    db 'Hello World',0
hellolb     db 'Test Of FASM',0
data import
library user32,'user32.dll',kernel32,'kernel32.dll'
include 'include\apia\user32.inc'
include 'include\apia\kernel32.inc'
end data  
که البته فایل win32a.inc رو include کرده که برنامه خلاصه تر نوشته بشه...
این قسمت توابع API مورد نظر رو از کتاب خانه های مورد نیاز import می کنه:
data import
library user32,'user32.dll',kernel32,'kernel32.dll'
include 'include\apia\user32.inc'
include 'include\apia\kernel32.inc'
end data
این قسمت دو رشته ی پیاممون رو تعریف می کنه و آدرسشون در hellomsg و hellolb نگه داری می شه:
hellomsg    db 'Hello World',0
hellolb     db 'Test Of FASM',0
این قسمت هم دو تابع API مورد نظر رو فراخوانی می کنه:
invoke MessageBox,0,hellomsg,hellolb,MB_OK
invoke ExitProcess,0

----------


## بهروز عباسی

درود به همه




> نوشتنش با Delphi که هم کار با رشته ها ساده هست، هم بهتره IDE رو تو Delphi طراحی کنیم، اما کیا Delphi بلدن؟ ...


من بلدم. :لبخند گشاده!: 



> کیا موافقن که اول با VB6 شروع کنیم بعد که کارمون راه افتاد کد رو ترجمه کنیم به دلفی؟


بی ادبی نباشه دهنمون سرویس میشه تا این کارو بکنیم!! :کف کرده!: 


موفق باشید

----------


## IamOverlord

این طور که به نظر می رسه Delphi بهترین گزینه هست...
زیادم باید مزاحم آقا بهروز بشیم!
FASM نسخه ی جدیدش رو دانلود کردم... و به قدرت نامتناهیش پی بردم!!! کافیه ۲ ۳ تا example اش رو نیگا بندازید...
خوب الان یه کاری واسه گروه دارم که مهم نیست Delphi کار باشیم یا VB کار یا ...
این که باید شروع کنیم به ساخت vbclassic7.inc برای FASM... کاربرد این ماکرو چیه؟ اینه که تمام توابع و چیزای اساسی زبانمون رو باید توش تعریف کنیم. مثلا یه روال برای پیوند ۲ رشته، یه روال برای به توان رساندن دو float یا همون Currency/Decimal خودمون، یه روال برای تبدیل integer به رشته،... برای مقایسه ها و عبارت های شرطی و ... خلاصه چیزای اساسی که لازممون می شه رو به صورت جزء به جزء تعریف می کنیم بعد فایل رو include می کنیم برای کدی که به Assembly تبدیل کردیم و بعد کد Assembly نهایی رو می دیم FASM کامپایل می کنه به exe... این جوری خیلی از شلوغی و درهم و برهمی کار کاسته می شه و قبل از ساخت کامپایلر چیزایی که لازم داریم رو نوشتیم... خوبیش هم اینه که روال هایی که باید توش تعزیف کنیم از هم جدا هستن پس خیلی راحت هر کس می تونه رو یه چیزی کار کنه، یکی رو تبدیل integer به string یکی رو تبدیل string به integer... پس فعلا یه چند تا از فایل های inc. رو نگاه بندازید... حتما هم FASM رو دانلود کنید پشیمون نمی شید!
ضمنا بچه ها قرار بذارید یه وقتی رو تعیین کنید که بریم RaidCall، جناب Mohammad Gh که اومد... جناب بهروز عباسی هم همین طور...
ضمنا باید از چند تا از کاربرای شاخ سایت هم کمک بگیریم، مثلا آقای *xman_1365_x* مدیر بخش اسمبلی... یا آقایون دیگه...

----------


## l4dl4d

برای دانلود سورس ها و نمونه ها سایت سایت delphi.about.com
sourceforge.com
رو پیشنهاد میدم
با تشکر
_______________
if i=n+1 then
boom
else
goto 1
end if

----------


## hamed_basic

> سلام
> من موافقم و هر کمکی از دستم بیاد انجام میدم.


خیلی جالبه زمانی که من برنامه نویسی تجاری رو شروع کردم (حدود 12 -13 پیش) باید همه جا ثابت میکردم که برنامه نویسی با وی بی (اون موقع 5 بود ) از همه بهتره 
الان هم دارم همین کار رو می کنم 
هر برنامه یا کامپوننتی که فکرش رو هم بگنید نوشتم و میدونم با استفاده از یکسری کتابخانه ها (البته اگه کلا پروژه رو بر پایه Open Source بنا کنیم ) حتما به نتیجه خواهد رسید .
آقا منم هستم و اگه کمکی ازم بربیاد حتما انجام میدم

----------


## hamed_basic

دوستان عزیز به نظر من از اول پروژه رو جوری پایه ریزی کنیم که محیطIDE مخصوص بخودش ، کامپایلر مخصوص خودش ، SDK های مخصوص خودش از همه مهمتر دستورات و توابع خاص خودش و ... داشته باشه ، من قبلا تو کار مشابهی همکاری داشتم و از اونجایی اون دوستان عزیز از زبان php واسه نوشتن برنامه استفاده کردن زحمت دوسال و نیمه همه به باد رفت ، به نظر من یا اصلا بیخیال همچین ایده ای بشیم و به کار وزندگی مون برسیم یا کاملا حساب شده باشه 
یه چیز دیگه رو هم توضیح بدم 
اصل موفقیت برنامه اینه که Open Source باشه 
و بتونه انگیزه واسه دولوپر ها ایجاد کنه 
اگر خدا خواست موفق شد یکی مثل من باید برم ساندویچی باز کنم 
اما بازم راضیم که این انجام بشه
و هر جور کمکی میکنم

----------


## IamOverlord

سلام جناب *hamed_basic*...
IDE رو از پایه با Delphi می نویسیم
کامپایلر رو هم همین طور و هیچ ربطی به VB6 قدیمی نداره کد هامون و از ۰ تا ۱۰۰ رو از اول انجام می دیم
یعنی قرار نیست که VB6 قدیمی رو گسترش بدیم، می خوایم دوباره نویسی کنیم
ضمنا پروژه Open Source هست فعلا
اگه می خواید همکاری داشته باشید، اکانت RaidCall بسازید...

----------


## IamOverlord

Let's Build a Compiler, by Jack Crenshaw
کسایی که با Pascal ویا Delphi کار می کنن بهتر متوجه می شن...

----------


## Felony

> سلام جناب *hamed_basic*...
> IDE رو از پایه با Delphi می نویسیم
> کامپایلر رو هم همین طور و هیچ ربطی به VB6 قدیمی نداره کد هامون و از ۰ تا ۱۰۰ رو از اول انجام می دیم
> یعنی قرار نیست که VB6 قدیمی رو گسترش بدیم، می خوایم دوباره نویسی کنیم
> ضمنا پروژه Open Source هست فعلا
> اگه می خواید همکاری داشته باشید، اکانت RaidCall بسازید...


 سلام ؛

اصولا در این نوع تاپیک ها پست نمیدم چون 99.99% این نوع تاپیک ها تو این سایت فقط از سر شور و هیجان جوانی و تازه کاری هست ، نه بیشتر ( انگشت اشارم به سمت این تاپیک نیست )

چند تا نکته :

- چیزی که میخواین بنویسین کامپایلر نیست ، مفسره ...

- اگر واقعا تو فکرتون نوشتن کامپایلر هست بیخیالش بشید و با نوشتن یک مفسر ساده شروع کنید ، کامپایلر بحث فوق العاده پیچیده ای داره و خیلی زود پشیمونتون میکنه .

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

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


امیدوارم دوستان این حرف ها رو به عنوان انتقاد بپدیرن ، نه قصد توهینی بود ، نه خرد کردن کسی یا زیر سوال بردن ایده ای ...

موفق باشید .

----------


## IamOverlord

> - چیزی که میخواین بنویسین کامپایلر نیست ، مفسره ...


این همه زبان که از یه Assembler ای مثل NASM یا FASM یا ... در قسمت پایانی استفاده می کنن،‌ Interpreter هستن؟



> - اگر واقعا تو فکرتون نوشتن کامپایلر هست بیخیالش بشید و با نوشتن یک مفسر ساده شروع کنید ، کامپایلر بحث فوق العاده پیچیده ای داره و خیلی زود پشیمونتون میکنه .


به خاطر همین هم گفتم برای دفعه اول یه سری ماکرو تو FASM تعریف کنیم. می شه Assembly رو هم آسون کرد. مثلا HLA رو نگاه کنید... ما هم می خوایم ماکروی مورد نیاز خودمون رو بنویسیم فعلا...



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


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



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


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

خیلی ممنون دوست عزیز...
نظرات و انتقادات و پیشنهاداتتون رو هم بگید بد نیست...!

----------


## ho3ein.3ven

سلام . اولین جلسه بین اعضای گروه در تاریخ جمعه 24/6/91 ساعت 22:00 برگزار میشه . کسانی که علاقه مند به همکاری با اعضای گروه و شرکت در جلسات هستند آی دی یاهو زیر رو ادد کنند . 
ID : Ho3ein.3ven

----------


## m.4.r.m

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

----------


## IamOverlord

گزارش:

خوب امشب که من و فقط ۲ نفر دیگه رفتیم Yahoo Messenger: 
*m.4.r.m*
*ho3ein.3ven*

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

امروز تازه فهمیدم که برای اعداد اعشاری (Floating Point) می تونیم از FPU کمک بگیریم... و خیلی احساس آرامش بیش تری می کنم!
در رابطه با vbclassic7.inc این قابلیت اضافه شده که می تونیم اعداد اعشاری رو به string تبدیل کنیم که بتونیم نمایش بدیم. ضمنا یه example نوشتم که با fsqrt رادیکال یه عدد رو به دست می آره و بعد نمایشش می ده. لیستی از instruction های FPU رو این جا ببینید:
en.wikipedia.org/wiki/X86_instruction_listings
دستوراتی هستن که حتی فکرشم نمی کردم وجود داشته باشن!: FCOS - FSIN - F2XM1 - ...

----------


## m.4.r.m

ما می توانیم حتی اگر 50 % راه رفته باشیم می گویم رفتیم اما شما که در خواب غفلت مانده اید چیزی برای گفتن ندارید ما رفتیم هر کی پایس سوار بشه بر ماشین زمان کامپایلر

----------


## abidana

دیگه حوصلم نمی گیره بیام توی این تاپیک :چشمک: 
چند نفر میگن میشه چند نفر میگن نمیشه
اگه شد که شد خوش به حالتان 
اگه نشد  هم باز خوش به حالتان چون بالا خره یه چیزی یاد گرفتید خود من هیچی از اسمبلی نمی دونستم ولی بخاطر این تاپیک یه چیز هایی ازش فهمیدم و  یه تجربه ی دیگر اینکه یادم میمونه که از این راه رفته برای نوشتن یه کامپیلر یا مفسر استفاده نکنم ( ارزش سواد اموزیشیش بالاست)
الان هم میگم خیلی دوست دارم با شما همکاری کنم و لی سوادش ندارم شاید هم در اینده وقتش چون این یه کار فوق حساس توی زندگی دیگران

----------


## IamOverlord

سلام دوستان.
اگه واقعا کسی قصد همکاری داره باید بیاد RaidCall یا Yahoo Messenger یا ... که با هم صحبت کنیم.
اونایی که می گن نمی شه یا اون قدر سخته که در حد نشدنه، به این دلیل می گن که واقعا باید وقت گذاشت، جست و جو کرد، مطالعه کرد، ... که ظاهرا بعضی ها حوصله ی این کارارو ندارن، یا می گن که نوشتن کامپایلر یه بحث فوق العاده پیچیده هست که این حرف ها جز نا امید کردن تو این شرایط تاثیر دیگه ای نداره، کامپایلر داریم تا کامپایلر...
ببینید من که این کار رو بالاخره خودم هم که شده می خوام انجام بدم ولی گفتم بد نمی شه تو این راه با چند نفر همکاری کرد... اتفاقا خیلی هم خوب می شه حتی اگه اونا هنوز چیزای لازم رو بلد نباشن...
منابعی که چند نفر همزمان دسترسی دارن بیش تر از یه نفره... همچنین حوصله ای که دارن... وقتی که دارن...
هنوز بچه ها نیومدن بپرسن چی بخونیم چی نخونیم چه جوری انجام می شه مشکلات یا موانع چیا هستن ... بعد انتقاد می شه که ما نمی تونیم... آخه چیو بررسی کردن که به این نتیجه رسیدن... لااقل بذارید ببینیم چه مشکلی هست که این پروژه نمی تونه به انجام برسه؟ نگید دانش بچه ها چون از اول هم قرار بود که همزمان یاد هم بگیریم...
واضحه که این جوری هیچ ماشین حساب هم نمی شه نوشت... باور کنید... حتی اون پروژه ی گروهی هم شکست می خوره وقتی هیچ کس پیگیر قضیه نباشه و اعضا دور هم جمع نشن... بعد میان می گن تا حالا تو این انجمن پروژه ی Open Source به ثمر نرسیده.
باز دم اون ۲ تا دوستمون گرم که اومدن یاهو حداقل تونستیم ۳ تایی با هم صحبت کنیم.
الان هم پروژه داره انجام می شه ولی با سرعتی کم تر از اون چیزی که انتظار می رفت...

----------


## m.4.r.m

من توابع سیستمی اسمبلی رو از رفیقم گرفتم کاملا به فارسی آموزش داده شده مسعود برات پیام خصوصی می زارم دانلود کن ببین چقدر بدردبخور هستن اینا کی میگه نمیشه ما میتوانیم من و مسعود و هر کی هم هست بیاد . مسعود بیخیال برا چی خودتو اذیت می کنی چرا بحث می کنی بریم خودمون بنویسیم با اینا چیکار داریم . وقتی نصف پروژه به صورت عکس در این پست قرار گرفت می فهمن که میشه یا نمیشه . وا لسلام

هر کی هم نا امیده امضای بنده رو بخونه همین

----------


## IamOverlord

سلام *m.4.r.m* عزیز.
کتاب واقعا جالبی بود بین کتاب های فارسی...
ضمنا یه جاییش نوشته بود:

----------


## l4dl4d

IAMOverload عزیز, با سلام
ببخشید چند روزی نبودم اینترنتم داره تموم میشه دلیل اینه  :خجالت: 
خوب آخرین پستتو خوندم جالب بود یعنی اینکه :
hex ( step1) & "," & hex (step2) & "," & "," hex (step3(
یعنی اینجوری ترجمه میکنه

در ضمن پیشنهاد میکنم اسمشو vb7 نزاریم چون تو نت دیدمش (vb7(
میتونیم بزاریم IR-Basic یا حتی یه زبان جدید حتی اینکه زبان برنامه نویسی فارسی باشه :
message "متن پیام"
پیغام.نمایش "ساخته شده توسط BRBBTKMM"و هشدار
البته نمیدونم میشه یا نه

----------


## IamOverlord

سلام دوست عزیز...
البته VB7 همون اولین نسخه ی VB.net هست... ما اسم اصلی محصولمون VB Classic هست... ولی خوب باشه بعدا باهم صحبت می کنیم در این مورد...
ضمنا ایده ی زبان برنامه نویسی فارسی واقعا ایده ی جالبی هست اما فعلا باید بی خیالش شد چون یه زمانی پروژه ام همین بوده و خیلی هم روش فکر کردم که ادامه بدم یا نه...
منم فعلا به علت اینترنتم نمی تونم بیام Yahoo! Messenger یا RaidCall... پس شما اگه می تونی بالاخره با *m.4.r.m* ویا *ho3ein.3ven* در تماس باش ...

----------


## IamOverlord

سلام.
*گزارش کار:*
فعلا نوع داده ی Single و Double و Ansi String رو می تونیم به هم تبدیل کنیم و مقدار گرد شدن اعداد float رو برای نمایش مشخص کنیم و توابع sin، cos و sqr برای نوع float یعنی single یا double نوشته شدن. که کسایی که می خوان می تونم براشون بذارم. الان باید بریم سراغ تخصیص حافظه ی Dynamic برای نوع String. همچنین یه تحقیقی باید در مورد نوع Currency و Decimal بزنم. FPU از نوع 80 بیتی Extended Precision هم پشتیبانی می کنه که هنوز نمی دونم دقیقا چه جوریه و فعلا کاری باهاش ندارم. در مورد پیاده سازی آرایه ها هم اول فکر می کردم که آرایه هر چند بعدی که بود به جاش یه آرایه ی یه بعدی به اندازه ی مجموع اعضای اون چند بعدی در نظر بگیریم و مکان هر عنصر رو با یه فرمولی بر حسب اندازه ی ابعاد محاسبه کنیم. بعد دیدم یه مشکلی پیش می آد این که اگه اندازه ی ابعاد آرایه یه عبارتی باشه که در زمان اجرا تعیین می شه کامپایلر نمی تونه محاسبه کنه که مثل عنصر (1,1,1) کجا هست چون مشخصات ابعاد رو نداره. بعد این راه به ذهنم رسید که برای رفع مشکل آدرس دهی به عنصری خاص، از اشاره گر ها استفاده کنیم. یعنی مثلا یه آرایه ای از اشاره گر ها داشته باشیم که هر عنصر به یه آرایه ی دیگه اشاره می کنه. این طوری مثلا می شه آرایه ی دوبعدی رو پیاده سازی کرد. فعلا نمی دونم VB6 چه طوری UBound و LBound رو به دست می آره...

----------


## IamOverlord

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



> نسخه Native با نسخه net. چه فرقی می کند؟
> ساختار زبان که همان است.
> مشکل شما نسخه 6 یا نسخه Net. نیست.
> برای شما سوءتفاهمی پیش آمده است.


نه دوست عزیز برام یه پروژه پیش اومده!
جمله ی اولتون رو توی گوگل جست و جو کنید فرقش رو متوجه می شید...
در مورد جمله ی دومتون، گل گفتین! ساختار تمام زبان های Basic، همون Basic هست. اما اصلا عین هم نیستن. اسماشون یکیه! شاید فرق VB با VB.net برای شما فقط ۴ حرف باشه... ولی این طور نیست.
نمی دونم مجبور به تفاهم با چه کسی هستم که برام سوء تفاهم پیش اومده!



> آینده زبان بیسیک VB.Net است.


چون خودم از ملالغتی بازی و جدا کردن قسمت هایی از حرف و ... خوشم نمی آد، همون کاری که شما در جمله های بعدی من کردید، از این جمله ایراد نمی گیرم. فرض می کنم منظورتون همون VB6 بوده از واژه ی کلی Basic.



> محدوده فکر خود را از VB6 فراتر ببرید.


پس به عنوان تاپیک نگاه کنید.



> بازار نرم افزاری ایران که هیچ حتی در هر جای دنیا طرح چنین مسئله ای خطاست*.


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



> مدت زمان تکمیل این پروژه برای 100 نفر نیروی کار زبده 26 سال است.
> در دید وسیع هیچ شرکتی توان رقابت با مایکروسافت را ندارد.
> مایکروسافت از هر شاخه ای وارد شود در آن شاخه پیروز است.


احتمالا به نفر-سال حساب کردید که در یک سال با ۲۶۰۰ نفر می شه این پروژه رو انجام داد. داداش منو از پروژه ی خودم نترسون! این نفر-سال ها رو در مورد زبان های دیگه هم خوندم. اصلا شما متوجه شدید چی در حال ساخته که تخمین زدید؟! نکنه شما هنوز فکر می کنید ما قراره با ۲۶۰۰ نفر-سال کار، همون پروژه ی مایکروسافت رو دقیقا انجام بدیم؟ خواهشا توجه کنید که ما یه چیز ساده می سازیم. بعد در مرحله ی بعد گسترشش می دیم. و آروم آروم بهش شاخ و برگ می دیم...
تو این فروم که هیچ شرکتی مشاهده نکردم! دوست عزیز چرا شما فکر می کنید ما توهم رقابت با مایکروسافت و زمین زدنش و ... رو داریم؟
خود مایکروسافت با جمله ی آخرتون موافق نیست!



> ببینید نوشتن زبان برنامه نویسی کاری نداره،


ای کاش این جمله ی بالا رو از بعد از ویرگول تا علامت تعجبش رو هم می ذاشتید، تا از حرفام برداشت اشتباه نشه...



> زمانی که شما کار را شروع کنید ، بعضی از مسائل خودشان را نشان می دهند.


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



> اگر شما یک زبان فوق شی گرایی جدید ایجاد کنید بله حق با شماست.
> حتماً نخستین عکس های سیستم عاملی که توسط این شخص نوشته شد را ببینید.
> مقایسه کردن یک پروژه دانشجویی با توضیع های Fedora , ubuntu , knopix و .. که خیلی مضحک به نظر می رسد.
> در مورد لینوکس بیشتر تحقیق کنید.
> در مورد پروژه گنو بیشتر تحقیق کنید.
> در مورد یونیکس بیشتر تحقیق کنید.


اون دوستمون هدفش این بود که یه مثال بیاره تا یه تصور اشتباه و وحشتناک رو از ذهن بچه ها بیرون بیاره، شاید مثال خوبی گیر نیاورده. ولی خیلی از پروژه های دیگه هم به عنوان نمونه، هستن که شما حتی فکرش رو هم نمی کردی به اون صورت انجام بشه. نمونه دارم...



> اشخاصی که نمی توانند با تکنولوژی جدید کنار بیان چه طور می توانند دیگران رو متقاعد کنند با تکنولوژی من درآوردی خودشان کار کنند!


اگه منظورتون از تکنولوژی جدید net. هست برا من که قدیمی شده... نیازی نیست کسی رو متقاعد کنم که با این محصول کار کنه. چون برای کسانی نوشته می شه که با VB6 کار می کردن. یه زبان با سینتکس جدید و عجیب و غریب نیست.



> بله حق با شماست ولی با این تفاوت که اتفاقی که در آینده ذهن شماست هم اکنون به واقعیت پیوسته است.
> لطفاً در مورد تکنولوژی WPF تحقیق کنید.


هر تکنولوژی جدیدی که بخواد بیاد ما خودمونو باهاش تطبیق می دیم. وگرنه باید برنامه نویسی رو گذاشت کنار! اصلا ما این پروژه رو راه انداختیم که خودمون رو با تکنولوژی های جدید مطابق کنیم نه این که دوباره عینا همون VB6 رو بسازیم!



> البته از حرف های بنده خرده نگیرید.بالاخره نظر بنده بود.


این که نظراتتون رو بگید برام جالبه، اما بعضی نظرات بوی توطئه و ناامیدی می ده!

برنامه نویسای واقعی، با روحیه ی مناسب حرفه شون، کارشون رو با علاقه انجام می دن و ناامید نمی شن. اگه چیز کاربردی ای می سازن که به ملت هدیه کنن، کارشون رو می کنن و حتی نگران اسم محصول یا این که فلان شرکت چه قدر پول داره و ... هم نیستن! مثل لینوس تروالدز که لینوکس رو ساخت و از اسم اشتباه GNU Linux خوشش نمی اومد ولی کارشو کرد چون کارشو دوست داشت...

----------


## IamOverlord

سلام...



> خیلی برای بنده جالب میشه شما در مورد تفاوت سینتکس های PicBasicPro و VB6 و VB.net و Basic4Android صحبت کنید.


پیشنهاد جالبیه!  :متفکر:  اما واسه این که فعلا خودمونو گم نکنیم، اول با سینتکس VB6 می نویسیم، که اصل کار انجام بشه بعد در مرحله گسترش به این پیشنهاد هم فکر می کنیم...



> چه طور WPF را به مجموعه VB6 که قرار بر گسترش آن دارید را اظافه می کنید.


البته تطابق با هر تکنولوژی ای که مربوط باشه...
ببینید برای ما مهم نیست که مایکروسافت WPF داده یا همون Silverlight یا هزارتا چیز دیگه... برای ما این مهمه که نهایتا Assembly کار چی هست؟ مایکروسافت گفته کد مقصدمون باید چه Format ای داشته باشه؟ مثلا الان ما کد مقصد رو مطابق با Win32/64 API در نظر گرفتیم. همچنین بعدا قراره طوری توسعه بدیم زبان رو که کد مقصد برای Platform های مختلف تولید بشه. برای Linux همون طور که Linux می خواد، برای MacOS همون طور که MacOS می خواد،‌ و برای Windows همون طور که مایکروسافت در آینده می خواد. اصلا اگه من بگم می خوایم Cross-Platform بسازیمش کی به چه طریقی می خواد انتقاد کنه که نمی شه کرد؟ آیا Linux هم برنامه نویسا رو مجبور به استفاده از استاندارد های Windows کرده، یا Windows مجبور به استفاده از استانداردهای یه محیط دیگه ... ؟ اصلا یه زبان مستقل از Platform رو شما چه طور می خواید با نقشه های مایکروسافت مورد انتقاد قرار بدید؟ مهم اینه که تا سیستم عامل هست یه ساختاری هست که یه کامپایلر کد هاش رو با اون ساختار تولید کنه... دیگه نمی فهمم این مدل انتقاد هایی که دوستان در این مورد کردن چی بود؟!



> توطئه؟


کلش رو جدی گرفتید  :چشمک:  



> برای گسترش VB6 توسط شما آرزوی موفقیت می کنم.


البته خود VB6 رو گسترش نمی دیم، چون خودش غیر قابل گسترشه باید یه چیز به روز و از پایه ساخت ولی با برخی ویژگی های مشابه... من هم برای شما، خودمون، برنامه نویسای ایرانی آرزوی موفقیت می کنم...

----------


## ali-a2

با سلام ! دو تا سوال داشتم !!

کار شروع شده !؟ کیا شرکت میکنن !؟؟
بعد به طور تقریبی چقد طول داره تا کل کارتون تموم شه ؟

موفق باشید !!

----------


## IamOverlord

سلام دوست عزیز.
کار شروع شده.
الان دو نفر دارن مشارکت می کنن:
*m.4.r.m*
*ho3ein.3ven*
یه نفر دیگه هم با این Yahoo Id احتمالا مشارکت بکنه: *brpalove*
زمان تموم شدن کار هم معلوم نیست. ولی این معلومه که هنوز سرعتمون با این تعدادمون کمه!
اگه می خواید به هر نحوی تو کار مشارکت داشته باشید، پیام خصوصی بدید...
شما هم موفق باشید!

----------


## m.4.r.m

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

----------


## IamOverlord

*m.4.r.m* جان واقعا راست می گی...
اگه این حرفه ای ها به جاش می اومدن نفری یه Type رو تو Assembly پیاده سازی می کردن کار بهتر پیش می رفت و الان ما رفته بودیم سراغ مسائل دیگه...
یعنی حداقل جلبک کاربردش اینه که می تونه یه اسم فانتزی واسه زبان برنامه نویسیت باشه!!!

----------


## IamOverlord

*گزارش کار:*

۱. این توابع هم پیاده سازی شده:
internal._cvt >> برای round کردن float با دادن تعداد ارقام اعشاری
internal._itoa >>‌ تبدیل integer به string
internal._memcpy_fast >> کپی سریع حافظه که در انتساب رشته ها و متغیر ها کاربرد داره

۲. یه کد ساده ی Allocate و ReAllocate کردن حافظه هم نوشتم که بعدا قراره با روش Dynamic Allocation طول رشته هامون رو تغییر بدیم و کم و زیاد کنیم، آرایه های پویا رو پیاده سازی کنیم و ...

برای پیاده سازی آرایه ها نمی دونم دقیقا VB6 چی کار می کنه... وقتی ابعاد آرایه رو در زمان اجرا تعیین می کنی یه تابع دیگه می تونه طول آرایه رو بفهمه، حد پایین، حد بالا، حتی اگه اطلاعات ابعاد آرایه رو نداشته باشید چه طور می تونید مکان عنصر مورد نظر رو محاسبه کنید؟ یعنی در شرایطی که حتی آرایه های چند بعدی هم به صورت یه آرایه ی ۱ بعدی در نظر گرفته می شن، بدون داشتن اطلاعات ابعاد در زمان اجرا به مشکل می خوریم...
اما این روش به ذهنم رسید که بعد اول رو به صورت یه آرایه از اشاره گر ها به آرایه ای دیگه که اونا هم می تونن مثل بعد اول اشاره گر باشن و ... در نظر بگیریم... این طوری بدون داشتن اندازه ی ابعاد هم می شه به خونه ی مورد نظر رفت... ولی هم چنان یه مشکلی باقی می مونه... این که LBound و U‌Bound رو باید بشه در زمان اجرا مشخص کرد... برای مشخص کردن اندازه ی ابعاد که فهمیدم می تونیم از تابع HeapSize کمک بگیریم... ولی برای Lbound به نظرم می شه مقدار LBound های هر بعد رو به ترتیب در انتهای آرایه ی اشاره گر ها یا داده ها در بعد اول بنویسیم. بعد برای مشخص کردن اندازه ی واقعی بعد اول می تونیم تعداد اعداد ورودی برای هر بعد رو از مقداری که به کمک HeapSize برای بعد اول دست می آریم کم کنیم... LBound هر بعد به صورت یه مقدار Integer از  نوع ۳۲ بیتی مشخص می شه. تغییر نوع آرایه هم که ممکن نیست، البته اگه آرایه ای با نوع نامشخص داریم می تونیم از نوع Variant که بعدا باید پیاده سازی بشه استفاده کنیم که در واقع اون هم یه نوع مشخص هست و نباید تغییرش داد در ReDim... به خاطر این که آرایه ها می تونن ReDim بشن پس به صورت پویا با تابع HeapAlloc در بخش Heap ساخته می شن و آدرسشون تو متغیر Static مربوطشون در Data Section ریخته می شه... البته آرایه های محلی آدرسشون تو مکان مربوطشون در Stack ریخته می شه...

----------


## returnx

من یک پیشنهادی برای شما دارم!!
اولا نوشتن یک کامپایلر کاری ساده نیست هر چقدر جلو تر که برید بیشتر متوجه خواهید شد!!
در واقع شما نیاز دارید که سینتکس VB6 رو زنده نگه دارید!!
من به شما پیشنهاد می کنم زبان برنامه نویسی رو روی FrameWrok  Qt درست کنید تا از کتابخانه های Qt استفاده کنه اما با سینتکس VB6...
این کار چه فایده ای داره!؟
همونطور که میدونید Qt  یک چارچوب کاری Cross-Platfom هست و کاملا رایگان و Open Source در نتیجه،
زبان برنامه نویسی شما  Cross-Platfom خواهد شد ، Open Source خواهد شد (در صورت نیاز) این عامل باعث میشه پروژتون با سرعت بیشتری توسعه پیدا کنه...
و از همه مهم تر دیگر نیاز نیست شما در گیر مسائلی مثل Multi Threading یا کار با فایل یا شبکه بشین...
چون تمام این کتابخانه از قبل نوشته شده و آمادست و در نتیجه حجم کد نویسیتون خیلی کم خواهد شد...
اما نکته ای که اینجاست نمیتونین بگین اینکه یک زبان برنامه نویسی ساختید...
اما پروژه ی جالبی انجام خواهید داد...
در واقع چیزی شبیه PyQt که امکان میده با زبان برنامه نویسی Pythone از کتابخانه های Qt استفاده کنیم... (البته چیزی شبیه PyQt)
در واقع شما IDE خواهید ساخت که به شما کمک می کنه با سینتکس VB6 تحت FrameWork Qt بتونید کد بزنید و نرم افزارتون رو با سادگی بیشتر و سریع تر توسعه بدید...
نظرتون چیه!؟

----------


## ASedJavad

> حداقل جلبک کاربردش اینه که می تونه یه اسم فانتزی واسه زبان برنامه نویسیت باشه!!!


 :تشویق:  :تشویق:  آفرین! جمله قشنگ و حکیمانه ای بود ...


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

(به نظرم این پست، دقیقا مصداق بارز پستهای بی محتوا و غیر کاربردی و به درد نخور باشه! :لبخند گشاده!: )

----------


## IamOverlord

پست شما بوی توطئه نمی ده! همچنین پست جناب *returnx*...!
واقعا بالاخره یکی به جای انتقاد/پیشنهاد های تکراری، جواب داده شده و ... یه انتقاد/پیشنهاد مفید و جالب کرد!
می دونستم Qt یه Framework هست ولی تا جایی که فهمیدم، مثل این که یه کتابخونه برای ++C و البته زبان دیگه ای که بخواد ازش استفاده کنه هست؟ درست؟ و قابلیت تولید فایل های Standalone و Native رو داره؟ اگه از هر زبانی می شه از کتابخونه های Qt استفاده کرد چه طور که مثلا از DLL های مختلف استفاده می کنیم، پس نمی شه گفت زبانی که از Qt استفاده کنه حتما کامپایلر نیست؟ مگر این که کدمون رو به زبان ++C تبدیل کنیم و از طریق ++C از Qt استفاده کنیم که در این صورت Interpreter نوشتیم نه Compiler...
حالا نمی دونم اگه دوستان Qt کار توضیحات بیش تری بدن ممنون می شم...

----------


## returnx

نمیدونم باید از کجا شروع کنم تا جواباتون رو بدم ، اما بزارید اول یکم کلی تر در مورد Qt توضیح بدم شاید در بین توضیح هام به جوابتون برسید...
Qt یک فریم ورک برنامه نویسی هست که با C++‎‎ توسعه داده شده اما میشه باز چندین زبان تحتش کد نوشت ، مثلا خود ِ C++‎‎ که بهترین انتخاب هست ، Java ، Python و حتی C#‎‎!!
اما نکته ای که باید بهش دقت بشه اینکه که Qt کد محلی سیستم عامل تولید میکنه در نتیجه نیاز به ماشین مجازی برای ترجمه کد ها نیست !! و فقط کافیه کد تولید شده را به یک کامپایلر بدید...
و نکته جالب تر اینجاست که با اینکه کد محلی تولید میشه ، اما باز هم برنامه شما Cross-Platform خواهد بود و شما در واقع فقط باید چند فایل چند MB را در سیستم مقصد انتقال بدید ، بر خلاف .net که باید کل .net چند صد  MB را در سیستم مقصد نصب کنید...
در واقع خود Qt یکسری فایل سرایند و کتابخانه ها و کلاس های نوشته شده به زبان C++‎‎ هست و کامپایلر خاصی نداره ، اما کد هایی که نوشتید رو میتونید با یک کامپایلر ، کامپایل کنید مثل gcc یا حتی  MSVC (Microsoft Visual C) ...
کدی که تحت Qt مینویسید خیلی سادست دقیقا مثل کدی که در فریم ورک دات نت مینویسید با کمی تفاوت برای مثال:
voidMainWindow::on_pushButton_clicked()
{
//QDialogi_dialog;
 
QStringext_list="*.txt;*.log";
QStringfile_address=QFileDialog::getOpenFileName(this,"OpenFile",QDir::currentPath(),ext_list);
ui->lineEdit->setText(file_address);
if(!file_address.isEmpty())
{
QFilei_file(file_address);
i_file._open_(QIODevice::ReadOnly);
QTextStreami_read_stream(&i_file);
ui->textEdit->setText(i_read_stream.readAll());
 
i_file._close_();
 
\
}با چند خط بالا می تونید محتویات یک فایل را بخوانید (البته فایل سرایند ، کلاس QFile بالا فراخوانی شده)...در واقع چیزی که شما نیاز خواهید داشت یک کامپایلر VB هست (که نمونه آمادشم اگه اشتباه نکنم میشه گیر آورد) اما اگر هم نشد میشه کد تون رو به C++‎‎ ترجمه کنید و بقیه کار را بسپارید به کامپایلر C++‎‎ و Qt...
اگر یادتان باشد ، چند سال قبل پروژه ای به اسم فارسی دات نت انجام شده بود که دقیقا یک همچین کاری می کرد یعنی کدتون رو به فارسی می نوشتید و یک لایه کد را به C#‎ تبدیل می کرد و بعد هم کامپایل!!(ولی این پروژه خیلی موفق نبود!!)

----------


## IamOverlord

سلام دوست عزیز...



> اما نکته ای که باید بهش دقت بشه اینکه که Qt کد محلی سیستم عامل تولید میکنه در نتیجه نیاز به ماشین مجازی برای ترجمه کد ها نیست !! و فقط کافیه کد تولید شده را به یک کامپایلر بدید...
> و نکته جالب تر اینجاست که با اینکه کد محلی تولید میشه ، اما باز هم برنامه شما Cross-Platform خواهد بود و شما در واقع فقط باید چند فایل چند MB را در سیستم مقصد انتقال بدید ، بر خلاف .net که باید کل .net چند صد MB را در سیستم مقصد نصب کنید...


این قسمت خیلی به دردم خورد... پس با این اوصاف همچنان می تونیم با استفاده از FASM از DLL های Qt استفاده کنیم؟
این تاپیک رو نگاه کنید: Qt & fasm
نظرتون چیه که کد اسمبلی رو تولید کنیم مثل قبل ولی از DLL های Qt استفاده کنیم؟

----------


## mr AHR

به نظر من اگر کاری میکنین هم باید Native باشه و هم قابل پیاده سازی در JVM و CLI
مثل جاوا
تو لینوکس میتونی کاملا کامپایلش کنی
رو JVM هم هست اصلش
به لطف مایکروسافت نسخه CLI هم داره

----------


## returnx

> پس با این اوصاف همچنان می تونیم با استفاده از FASM از DLL های Qt استفاده کنیم؟


به دلیل اینکه خیلی رو Assembely  کار نکردم ،  در این مورد اطلاعات خاصی ندارم... 



> نظرتون چیه که کد اسمبلی رو تولید کنیم مثل قبل ولی از DLL های Qt استفاده کنیم؟


فکر می کنم اینطوری کار سخت تر بشه ، فکر کنم اگر کد C++‎‎ تولید کنیم و با کامپایلری مثل Mingw کامپایل کنید راحت تر باشه...
من چون ، خیلی رو مسائل مثل کامپایلر نویسی و برنامه نویسی سطح پایین تسلط ندارم ، ترجیح میدم تصمیم گیری را به عهده خودتون بزارم...

----------


## IamOverlord

سلام دوست عزیز!
اگه از FASM استفاده کنیم همون برنامه های ++C رو همچنان می تونیم به زبان Assembly و برای Platform های مختلف بنویسیم.
در هر Platform ای از Qt می تونیم کمک بگیریم تا خیلی جاها کار راحت تر شه.
به عنوان مثال نمونه برنامه ای که از Qt استفاده می کنه و با FASM نوشته شده رو ضمیمه کردم. توجه کنید که DLL های Qt رو اگه ندارید می تونید به صورت جداگانه *دانلود* کنید و در کنار فایل exe بذارید.
این mingw که DLL اش هم هست چیه؟ ضمنا منبع خوبی هست که بتونیم در مورد توابع داخل DLL های Qt ازش مطلب استخراج کنیم؟ یه چیزی شبیه MSDN که در مورد API های Windows توضیح می ده...

----------


## IamOverlord

> به نظر من اگر کاری میکنین هم باید Native باشه و هم قابل پیاده سازی در JVM و CLI
> مثل جاوا
> تو لینوکس میتونی کاملا کامپایلش کنی
> رو JVM هم هست اصلش
> به لطف مایکروسافت نسخه CLI هم داره


سلام دوست عزیز...
می خوایم Native باشه ولی در مورد پیاده سازی در JVM و CLI نمی دونم...
اگه مسئله ی Cross-Platform بودن هست، می شه در آینده برای Platform های مختلف فایل اجرایی تولید کرد...
ولی فعلا اول برای Windows تولید می کنیم...

----------


## mgkh-morteza

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

----------


## returnx

> اگه از FASM استفاده کنیم همون برنامه های ++C رو همچنان می تونیم به زبان Assembly و برای Platform های مختلف بنویسیم


بله ، مشکل اینجا نیست ، مشکل تولید کد های اسمبلی هست ، که کار رو سخت میکنه ، مثلا تولید کد اسمبلی برای ایجاد آرایه پویا و... 



> در هر Platform ای از Qt می تونیم کمک بگیریم تا تا خیلی جاها کار راحت تر شه.


من نمیدونم منظورم  دقیقا متوجه شدین یا نه؟ اما منظور من اینکه کار بر بتونه با کمک زبان VB تحت Qt کد بزنه حالا ما میتونیم این IDE که قرار  به کاربر کمک کنه رو با هر زبانی بنویسیم ما اگر مطمئنا با Qt باشه خیلی بهتر و راحت تر میشه و همچنین Cross-platfom...



> این mingw که DLL اش هم هست چیه؟


mingw در واقع یک کامپایلر C++‎ هست که یکی از چند کامپایلر خانواده gcc محسوب میشه...
برای اینکه برنامه رو که با Qt نوشتید رو کامپایل کنید باید از یک کامپایلر C++‎ استفاده کنید ، من چون رو سیستمم Visual Studio از قبل نصب بود از msvc ماکروسافت استفاده میکنم ، ولی میشه از gcc هم استفاده کنم...



> ضمنا منبع خوبی هست که بتونیم در مورد توابع داخل DLL های Qt ازش مطلب استخراج کنیم؟


ببنید ما برای کد نویسی به این DLL ها اصلا نیازی نداریم و فقط موقع اجرا به اونها نیاز پیدا می کنیم و چند تا بشتر هم نیستد ، که با انتقال رو سیستم مقصد برنامتون به درستی کار میکنه ...
برای کسب اطلاعات هم میتونید به http://doc.qt.digia.com/ برید که خیلی بهتر و قشنگ تر از MSDN مستند سازی شده....
من بهتون توصیع می کنم حتما کتابخونه های Qt و QtCreator که یک IDE برای نوشتن برنامه تحت Qt هست را دانلود کنید و تجربه کد نویسی با Qt رو ببینید...
بعد از مدتی با تکنولوژی های جدیدی آشنا میشید که اصلا با ورتون نمیشه مثلا :
QML (که یک زبان برنامه نویسی هست برای نوشتن سریع برنامه ها برای گوشی های هوشمند و تبلت ) ، Qt +HTML5  که میتونید UI برنامه رو با HTML5 طراحی کنید و کد اصلی برنامه رو با Java Script + C++‎ بنویسید که خیلی جالب هست و....
به همین دلیل است که میگم اگه بشه در تحت Qt با زبان VB کد زد یکبار دیگه این زبان زنده میشه...

----------


## IamOverlord

پس کدی که تولید خواهیم کرد، برای پروژه ی اولمون، Qt در ++C خواهد بود؟ خوب کار نسبتا سریع تر انجام می شه و این نکته ی خوبی هست چون بعدا هم می تونیم به این فکر کنیم که به جای کد ++C کد مثلا Assembly رو تولید کنیم...
اما اگه شما و بقیه دوستان Qt کار هم در طول پروژه همکاری کنین خیلی خوب می شه... فعلا که Qt رو از Assembly هم کم تر بلدم!

----------


## returnx

بنده تا جایی که وقتم اجازه بده کمک خواهم کرد ، اما بهتر این مسئله رو در تالار Qt هم مطرح کنید و نظر دوستان دیگری مثل جناب حامد مصافی که مدیر بخش Qt هستند  رو هم بپرسید...

----------


## abidana

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

----------


## IamOverlord

barnamenevis.org/showthread.php?99549-Assembly-win32-Programming-tutorials-by-Vahid-Nasiri

----------


## returnx

این IDE که مد نظر من هست شاید چند لایه داره به این صورت:
1- محیط طراحی ویژوال 
2- مترجم VB به  C++‎ (برای تولید فایل کد C++‎) 
3- Linker برای لینک کردن فایل به کامپایلر و نمایش خروجی
برای لایه اول میشه از Qt Desiner که همراه پکیج QtCreator هست استفاده بشه...
برای لایه دوم باید یک مفسر کوچیک بنویسیم که فقط کد های VB رو به C++‎ بر گردونه...
برای لایه سوم هم باید یکسری کد بنویسیم که فایل کد C++‎ را به Compiler لینک کنه تا خروجی رو بگیره و برنامه رو اجرا کنه...
تا اونجا که من میدونستم گفتم ، بقیش با شما !!!
البته ساختن این محیطی که م نظر ماست مثل گفتنش آسون نیست!!!
تمام این مراحل این بالا را باید با جزئیاتشون انجام بدیم!!!
آیا میشه یک همچین کاری کرد!؟

----------


## IamOverlord

سلام.
مراحل تقریبا از هم مستقل هستن و می شه به طور موازی روشون کار کرد...
محیط طراحی ویژوال که تا حالا طراحی نکردم و اگه دوستانی که تجربه دارن انجام بدن بهتره...
قسمت ۲ مسئله ی اصلی ماست و قسمت ۳ هم که پیچیدگی خاصی نداره...
قسمت ۲ رو باید console مانند بنویسیم که از خط فرمان ورودی بگیره و ضمنا باید خیلی تروتمیز بنویسیمش که بعدا در توسعه، برای تولید کد های غیر Qt، به مشکل نخوریم...
الان دوستانی که روی ASM کار می کردن فکر می کنم بهتر باشه فعلا روی مفاهیم مربوط به کامپایلر مطالعه داشته باشن... ایده ها، روش های مرسوم، مشکلات و راه حل هاشون،... که در قسمت ۲ به کار می آد... همون سورس Libry Compiler رو هم نگاه بندازن باعث می شه یه مقدار کار دستشون بیاد...

----------


## returnx

> محیط طراحی ویژوال که تا حالا طراحی نکردم و اگه دوستانی که تجربه دارن انجام بدن بهتره...


به جای ساخت چنین محیطی میشه ، از همون Qt Designer که نوکیا عرضه کرده استفاده کرد...



> قسمت ۲ رو باید console مانند بنویسیم که از خط فرمان ورودی بگیره و ضمنا باید خیلی تروتمیز بنویسیمش که بعدا در توسعه، برای تولید کد های غیر Qt، به مشکل نخوریم...
> الان دوستانی که روی ASM کار می کردن فکر می کنم بهتر باشه فعلا روی مفاهیم مربوط به کامپایلر مطالعه داشته باشن... ایده ها، روش های مرسوم، مشکلات و راه حل هاشون،... که در قسمت ۲ به کار می آد... همون سورس Libry Compiler رو هم نگاه بندازن باعث می شه یه مقدار کار دستشون بیاد...


برای این کار هم خیلی نیاز به زوم کردن رو جزیئیات نیست ، فقط کافیه فایل کد VB  رو به فایل کد C++‎ ترجمه کینم ، یعنی دقیقا کاری که این سایت :http://www.developerfusion.com/tools...#convert-again
و نرم افزار های مشابه انجام میدن....
البته برای اینکه یک ایده برای ساخت چنین چیزی بگیرید میتونید فصل 18 کتاب C جعفر نژاد قمی رو مطالعه کنید که یک مفسر Basic نوشته شده....
یعنی اگر یه همچین چیزی داشتیم : 
if x>5 then
//Condition

باید داشته باشیم :
if (x>5)
{
//ToDo
}
البته من یک نمونه نوشتم که فقط برای شرط هست (البته خیلی اصولی کار نکردم فقط برا تست بود) :
Convert_VB_C++‎.jpg

اینم کدش: 
QTextDocument*i_document=ui->vb_txt->document();
QStringAll_vb_code=i_document->toPlainText();
//split("\tr",QString::SkipEmptyParts);
QStringListi_code_list=All_vb_code.split("\tr",QString::SkipEmptyParts);
QStringtemp_cpp_code;
QStringtemp_vb_code;
QStringcondition_txt;
QStringblock_test;
for(intcounter=0;counter<i_code_list.count();counter++)
{

//temp_cpp_code=temp_cpp_code+i_code_list.at(counter  )+"\r\n";
temp_vb_code=i_code_list.at(counter);
intchk_if=temp_vb_code.indexOf("if");
intchk_then=temp_vb_code.indexOf("then");

if(chk_if>-1)
{
//temp_cpp_code=temp_cpp_code+if_block;
condition_txt=temp_vb_code.mid(chk_if+2,chk_then-2);
temp_cpp_code=temp_cpp_code+if_block+condition_open+condition_txt+condition_close+block_open;
}




}
ui->cpp_text->setText(temp_cpp_code);
البته یکسری ثابت هایی هم از قبل تعریف شده اند://KeyWord&&Token#defineif_block"if"#defineblock_open"{"#defineblock_close"}"#definecondition_open"("#definecondition_close")"

----------


## IamOverlord

نیازی هست کامپایلر رو حتما با Qt بنویسیم؟

----------


## returnx

> نیازی هست کامپایلر رو حتما با Qt بنویسیم؟


100 % بله!! چون اینجوری شما با C++‎ کد خواهید زد ، انعطاف پذیری بیشتر و سرعت بیشتری خواهید داشت و همچنین چون از خود Qt استفاده می کنید ، IDE چند سکویی خواهد شد...
در ضمن همونطور که گفتم نیاز به نوشتن کامپایلر نیست ، فقط یک مترجم VB به C++‎  کافیه + ابزار های یک IDE ...
برای کامپایل از کامپایلر Mingw میشه استفاده کرد....

----------


## amin32

سلام . فقط میخواستم بگم اگه دو نفر دیگه آشنا با گرامرها و زبان برنامه نویسی مورد استفاده پروژه جور بشه , منم حاضرم تا جایی که وقتم اجازه میده همکاری کنم. به نظرم این اینکار برخلاف نظر خیلیهای دیگه نیاز به نیروی کار آنچنانی نداره .ولی خوب به تنهایی هم واقعآ مشکل میشه. در اینجور پروژه ها کیفیت افراد از کمیتشون مهمتره. فکر میکنم نهایتآ 6 نفر آدم  *فعال* که 3 نفرشون با گرامر ها و زبان مورد استفاده آشنا باشن و 3 نفر دیگه به اسمبلی تسلط داشته باشن برای این پروژه کفایت کنه. ولی اگه نتونستید شرایط و افراد رو پیدا کنید به نظرم اصلآ شروع نکنید!

----------


## IamOverlord

سلام *amin32* عزیز.
در مورد افراد آشنا با گرامر موافقم. در مورد افراد آشنا با Assembly فعلا که با نظر جناب *returnx* یه Interpreter می سازیم که کد C++‎‎/Qt تولید کنه. پس کار نسبتا ساده تر هست. و این که بعدا می تونیم آروم آروم گسترش بدیمش و مثلا یه کامپایلر هم در کنار مفسر بهش اضافه کنیم...
ولی فعلا باید افراد پایه برن با Qt آشنایی پیدا کنن و کار رو شروع کنیم.
اما یه مشکلی که هست اینه که وضعیت افرادی که می خوان همکاری کنن معلوم نیست...

----------


## amin32

امیدوارم ناراحت نشی از انتقادم ولی به نظرم شما تاپیک رو بد شروع کردید . شما میخواید با آوردن دلایل مختلف , افرادی رو که آشنایی زیادی با مسائل مربوط به پیاده سازی ندارند مجاب کنید که همکاری کنند. شما اول باید با نیازمندیهای پروژتون آشنا بشید که در این مورد میشه گرامرها , زبان پیاده سازی و زبان اسمبلی ( یا هر زبان مقصد دیگر ) . بعد در یک تاپیک از افراد آشنا به این مسائل دعوت به همکاری کنید .  اینکه مثلا افراد ناآشنا با گرامرها بخوان در حین انجام پروژه مساله به این مهمی رو یاد بگیرن واقعآ غیر ممکنه.

----------


## IamOverlord

فکر کنم راست می گی! D:
چون هدف من انجام این پروژه بود در صورتی که هدف تاپیک بیش تر کردن تعداد افراد برای راحتی کار... و خواستم به هر قیمتی شده افراد رو جمع کنم!
بهتر بگم، به جای این که به دنبال افرادی که کار رو بلدن بگردم (دیدم کسی نبود!)، دنبال افرادی گشتم که بخوان کار رو بلد بشن...
راستش فکر کردم حداقل دسته ی دوم  تعدادشون بزرگ تر از صفر هست! ولی بعدا به شک افتادم!
ولی هر چی به عنوان تاپیک فکر می کنم می بینم اگه نخوایم بی خیال VB6 بشیم باید ... !
...

----------


## IamOverlord

سلام.
همچنان دنبال انجام این پروژه هستم...
من Qt رو دارم دانلود می کنم. کدوم رو باید انتخاب بکنم و باید چه تنظیماتی رو انجام بدم؟
سریال رو هم دریافت کردم.

Qt 4.8.2 for Windows (Src and VS2008 32bit Binary)
http://dist.qt.digia.com/developer/download/qt-win-commercial-4.8.3-vs2008.exe

Qt Visual Studio Addin 1.1.11 (Binary)
http://dist.qt.digia.com/developer/download/qt-vs-addin-1.1.11.exe

Qt 4.8.3 for Windows (Src and VS2010 32bit Binary)
http://dist.qt.digia.com/developer/download/qt-win-commercial-4.8.3-vs2010.exe

Qt 4.8.3 for Windows (Src and MinGW 32bit Binary)
http://dist.qt.digia.com/developer/download/qt-win-commercial-4.8.3-mingw.exe

Qt Creator 2.5.2 for Windows (32bit Binary)
http://dist.qt.digia.com/developer/download_creator/qt-creator-win-commercial-2.5.2.exe

Qt 4.8.3 for Windows (Src and VS2010 64bit Binary)
http://dist.qt.digia.com/developer/download/qt-win-commercial-4.8.3-vs2010-64bit.exe

Qt Commercial SDK for Windows
http://dist.qt.digia.com/developer/download_sdk/QtCommercialSDK-online-win-x86-v1.0.2.exe

Qt Commercial Charts 1.1.0
http://dist.qt.digia.com/developer/download_charts/qt-commercial-charts-src-1.1.0.zip

Qt Commercial 3D 1.0.0 Sources
http://dist.qt.digia.com/developer/download/qt-commercial-3d-src-1.0.0.tar.gz

----------


## BORHAN TEC

سلام
من تمام پستهای این تاپیک را نخوانده ام ولی پیشنهاد می کنم که به عنوان کامپایلر از PaxCompiler استفاده کنید که از 64 بیت هم پشتیبانی می کند. به هر حال توصیه می کنم که به لینک زیر نگاهی بیاندازید:
http://www.paxcompiler.com/

یک مورد دیگر هم هست که در تفسیر کد خیلی کمکتان میکند و آن هم Regular Expression است که حتماً باید کتابی در این خصوص بخوانید. به نظر من برای تفسیر کد ها استفاده از if و ... اصلاً کار درستی نخواهد بود چرا که با این روش های سنتی کار بسیار پیچیده خواهد شد.

به نظر من بهتر است که فعلاً فقط بر روی مکانیزم کار تفسیر و کامپایل وقت بگذارید و کار بر روی IDE را فعلاً رها کنید.من که چیز زیادی بلد نیستم ولی اگر سرم خلوت تر بشه(انشاالله) من هم سعی می کنم تا جایی که می توانم شما را برای انجام این پروژه راهنمایی کنم.

اگر میتونستی یک اسپانسر خوب پیدا کنی من همین الان به صورت جدی به گروه شما می پیوستم. نمی خواهم بگویم که خیلی انسان مادی گرایی هستم ولی قبول کن که انجام این کار خیلی هزینه بر است (هم از لحاظ بودجه مالی و هم از لحاظ زمانی).

موفق و سربلند باشید...

----------


## BORHAN TEC

جالب است بدانید که PaxCompiler از زبان Basic ، Pascal و C++‎ هم پشتیبانی می کند و قرار است که پشتیبانی از Java Script و C هم به این موارد اضافه شود که فکر می کنم که یکی از بهترین گزینه ها برای کار شما است به گونه ای که دیگر به تبدیل کد از یک زبان به زبان دیگر نیازی نیست.

----------


## IamOverlord

سلام دوست عزیز.



> من تمام پستهای این تاپیک را نخوانده ام ولی پیشنهاد می کنم که به عنوان کامپایلر از PaxCompiler استفاده کنید که از 64 بیت هم پشتیبانی می کند. به هر حال توصیه می کنم که به لینک زیر نگاهی بیاندازید:
> http://www.paxcompiler.com/


اون سایت رو دیدم و خوندم، اما لطفا یه توضیحی هم در این مورد بدید... ممنون...




> یک مورد دیگر هم هست که در تفسیر کد خیلی کمکتان میکند و آن هم Regular Expression است که حتماً باید کتابی در این خصوص بخوانید. به نظر من برای تفسیر کد ها استفاده از if و ... اصلاً کار درستی نخواهد بود چرا که با این روش های سنتی کار بسیار پیچیده خواهد شد.


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




> به نظر من بهتر است که فعلاً فقط بر روی مکانیزم کار تفسیر و کامپایل وقت بگذارید و کار بر روی IDE را فعلاً رها کنید.


این کار عاقلانه است و نظر من هم همینه... IDE چیزیه که بعدا می شه با خیال راحت به عنوان Code Generator بهش پرداخت...




> اگر میتونستی یک اسپانسر خوب پیدا کنی من همین الان به صورت جدی به گروه شما می پیوستم. نمی خواهم بگویم که خیلی انسان مادی گرایی هستم ولی قبول کن که انجام این کار خیلی هزینه بر است (هم از لحاظ بودجه مالی و هم از لحاظ زمانی).


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

----------


## BORHAN TEC

> اون سایت رو دیدم و خوندم، اما لطفا یه توضیحی هم در این مورد بدید... ممنون...


توضیحات در موردش زیاده ولی برای این که بهتر در موردش بدونید فایل راهنمای اون رو از قسمت Download مربوط به سایت مذکور دانلود کنید:
http://www.paxcompiler.com/downloads/paxcomp_chm.zip
با تحقیقاتی که من بر روی این کامپایلز داشتم متوجه شدم که شاید برای پروژه شما بهترین گزینه باشید.



> قطعا! من در این مورد کتاب هایی تهیه کردم و در مورد اصول طراحی کامپایلر و روش ها و مسائل مختلفش مطالبی خوندم... استفاده از if به صورت عادی یه چیزی از سنتی هم عقب تره!


اگر می خواهید که به صورت دقیقتری در مورد ساخت کامپایلر تحقیق کنید و از روش های مدرن امروزی بهره ببرید می توانید در مورد LLVM هم تحقیق کنید. خوشبختانه مجله "شبکه" از شماره 137 که مربوط به مهرماه سال 91 است شروع به نوشتن یکسری مقالات در این مورد کرده که خواندنش رو به شما توصیه می کنم.



> این کار عاقلانه است و نظر من هم همینه... IDE چیزیه که بعدا می شه با خیال راحت به عنوان Code Generator بهش پرداخت...


این تصمیم واقعاً عاقلانه است، چرا که ساخت برنامه ای که ظاهر گرافیکی هم ندارد ولی می تواند کدی را کامپایل کند نسبت به یک محیط گرافیکی که کدی را نمی تواند کامپایل کند انگیزه بیشتری به انسان می دهد.



> در مورد تهیه ی اسپانسر باید بیش تر فکر کنم... آخه واقعا نمی دونم تو این مراحل اولیه لازمه یا نه...  اما از لحاظ زمانی واقعا باید روش وقت گذاشت به طور جدی... می تونم یه سایت براش راه بندازم و از اون طریق، اسپانسر، همکار و کاربر گیر بیاریم...


به هر حال دوستان زیادی هستند که اطلاعات فنی زیادی دارند. خود بنده حقیر هم اکنون پروژه بزرگی را در دست دارم و خوشبختانه در طول ساخت این پروژه اطلاعات زیادی را کسب کرده ام ولی قبول کنید که ول کردن این پروژه بزرگ و وقت گذاشتن برای پروژه ای که اسپانسری ندارد برای من و امثال من اصلاً عاقلانه نیست.

----------


## IamOverlord

سلام.
اگه می شه یه تخمینی در مورد هزینه های مربوط به اسپانسر بزنید...  :متفکر:

----------


## BORHAN TEC

سلام
بستگی داره که چقدر قابلیت بخواهید به این پروژه اضافه کنید ولی در نظر داشته باشید که برای ساخت این برنامه حداقل باید 4 میلیون خط کد که اکثراً هم الگوریتمیک هستند نوشته شود و کلاً فکر می کنم برای طراحی یک زبان برنامه نویسی + یک IDE + یک Compiler + مستندات + فریم ورک، بابت هزینه پایه حدود 100 میلیون تومان نیاز باشد و طبیعی است که برای شروع کار به یک اسپانسر قوی و یک تیم حدوداً 10 نفره نیاز است. البته این نظر شخصی بنده حقیر است و همانطور که می دانید در ایران اشخاصی پیدا می شوند که بگویند ما این پروژه را با مبلغ 200 هزار تومان هم شروع می کنیم ولی این ارقام برای چنین پروژه ای اصلاً واقع بینانه نیست و اگر اسپانسر قدرتمندی نباشد که بتواند این هزینه ها را تامین کند بعید می دانم انجام این پروژه دوامی داشته باشد. البته توجه داشته باشید که اگر این زبان برنامه نویسی تحت دات نت باشد از آنجایی که بابت ساخت فریم ورک و IDE زحمتی کشیده نمی شود هزینه پایین تر خواهد بود.

----------


## IamOverlord

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

----------


## abidana

من کاملا با حرف اقای iamoverlord موافقم با وجود اینکه خیلی وقته وی بی را ول کردم ولی می خوام بدونم کا تا کجا پیش رفته 
با وجود حودا120 نظر و ........... اقای iamoverlord امیدی برای ادام هاین پروژه دارن یا نه

----------


## IamOverlord

سلام دوستان.
من یه مدتی کلا از این انجمن و این جور کارا فاصله داشتم.
ولی همچنان امیدوار هستم.
اگه دوستان می خوان کار رو ادامه بدیم من پیشنهاد می کنم قضیه رو غیر مالی شروع کنیم!
تو این مدت داشتم یه سری برنامه ی محاسباتی می نوشتم به این فکر افتادم که چه خوب می شد VB6 یه سری چیزا رو به صورت پیش فرض داشت... مثلا قابلیت تعریف دقت متغیرت و سایز عدد داخل متغیرت که برنامه های محاسباتی رو سریع تر و بهتر بشه نوشت... می دونم Matlab اختراع شده!
می شه اهداف و ویژگی های پروژه رو در ابتدا چیزای ساده تری تعیین کرد. مثلا: VB7 بهینه شده برای برنامه های محاسباتی... ؛ و کم کم بریم بهش شاخ و برگ بدیم و از VB6 هم بزنیم جلوتر...
وقتتون رو تلف نکنید!
من به انجام این پروژه امید دارم...
من مثل مورفیوس هستم و VB7 هم مثل نیو، بقیه هم مامور اسمیت!  :بامزه:  البته اگه ماتریکس رو دیده باشید!

----------


## Mousavmousab

> سلام
> فکرهای خوب و بزرگی در سر دارید اما فکر نمی کنید استفاده از زبانهایی مثل دلفی یا سی بهتر باشه؟
> احتمالاً (حتماً) یادگیری این زبان ها کمتر از ساخت (گسترش) یک زبان هستش.
> 
> 
> 
> موفق باشید.


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

----------


## Hashemvp

سلام دوستان
من تا3 صفحه از پست ها رو خوندم طرح جالبی هست
نمیخاوم نا امیدتون کنم یا هر چیز دیگه ای ولی 5 سال پیش ی سورس دیدم ک یکی ب تنهایی اینکارو توی ویبی 6 کرده بود و ی زبان برنامه نویسی فارسی درست کرده بود
و میخواست این تیم رو درست کنه و انگار نشده
البته اینطوری ک از تایپک و پست هاش پیداست انشالله این یکی میشه

من پیشنهادم اینکه بجای اینکه ی زبان برنامه نویسی جدید درست کنید همین ویبی 6 رو با کامپونت ساختن ارتقاع بدید
مثلا کامپونت هایی ک بتونه از مترو ویندوز استفاده کنه و ارتباط بر قرار کنه یا با استانداردهای جدید ویندوز پلت فرم و Silverlight ارتباط برقرار کنه
من چند تایی کامپونت نوشتم ک از زبان فارسی پشتیابنی میکنه یعنی دستورات و فراخوانی توابع فارسی نوشته میشه انشالله اگر مشکلی پیش نیاد میخوام توی فروم بذارم
ک از وقتی ک این پروژه رو شروع کردم انواع و اقسام اتفاق افتاده ک وقت نشده انجام بدم و عقب تر بیافته.

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

موفق باشید

----------


## IamOverlord

سلام دوستان.
بالاخره تابستون شد و یه مقدار وقت آزاد پیدا کردم که رو پروژه کار کنم.
یه Parsing System خفن پیدا کردم که باید ببینید! اسمش *GOLD* هست و رایگان هم هست!
www.goldparser.orgکه البته اول نتونستم وارد سایتش بشم، شاید ایران رو تحریم کرده باشه، اما از *این راه* رفتم...
یه Parser Generator هست که تو یکی از صفحات Wikipedia در مورد مقایسه ی Parser Generator ها پیداش کردم:
en.wikipedia.org/wiki/Comparison_of_parser_generatorsدیدم برای Output Language نوشته از x86 assembly language, ANSI C, C#‎‎‎‎‎‎‎‎‎, D, Java, Pascal, Object Pascal, Python, Visual Basic 6, Visual Basic .NET, Visual C++‎‎‎‎‎ پشتیبانی می کنه.
این هم یه عکس از محیط برنامه:

----------


## Jarvis

آقای *IamOverlord* که اسمتون رو هم نمیدونم ... من قبلاً بهتون پیغام داده بودم بابت همکاری در این پروژه ... ولی متاسفانه تخصص زیادی توی برنامه نویسی نرم افزار ندارم ... یکم دلفی کار کردم که اونم فکر نکنم به درد بخوره ... ولی تخصص اصلی من گرافیک و وب هستش ... به هر حال من توی پروژه ی آنتی ویروس سایروس که خودتون در جریانش هستید گرافیست هستم ... توی این پروژه هم خوشحال میشم کمکی کنم ...

اگه جایی کمکی از دست من بر بیاد دریغ نمیکنم... اجازه هست بنده هم همکاری کنم ؟ :خجالت:

----------


## IamOverlord

بله اتفاقا کارهای شما رو دیدم و خوشحال می شم همکاری کنید!
ضمنا اسم من مسعود هست...
 :چشمک:

----------


## IamOverlord

از دوستان علاقه مند می خوام این جا رو نیگا کنن: a Tiny Parser Generator v1.2
حداقل برای دست گرمی خوبه... توضیحات خوبی هم داده...

----------


## Jarvis

> بله اتفاقا کارهای شما رو دیدم و خوشحال می شم همکاری کنید!
> ضمنا اسم من مسعود هست...


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

----------


## IamOverlord

سلام دوستان!



> در مورد اسمبلی هم خیلی دوست دارم یاد بگیرم ... ولی منابع خوبی پیدا نکردم...


سعی کردم *این جا* یه آموزش خوبی گذاشته بشه در مورد *برنامه نویسی Win32 با MASM*... فعلا بخش اولش رو گذاشتم که اصول پایه ی کار رو می گه...
البته این آموزش زیاد مقدماتی نیست ولی برای ورود به برنامه نویسی Win32 چیز خوبیه!

----------


## Jarvis

سلام
با توجه به صحبت هایی که با مسعود عزیز شد برای تعیین اسم پروژه و اسم تیم ، از میان چندین اسم اسامی زیر به عنوان اسم پروژه و اسم تیم انتخاب شدند:
نام پروژه : Hypersia به فارسی هایپرشیا که از کلمه ی انگلیسی Hyper به برگردان فارسی "بیش از حد" و Persia به معنی ایرانی ساخته شده ...
یعنی Hyper + Persia = Hypersia
این اسم توسط بنده پیشنهاد داده شد که به تأیید بنده و مسعود عزیز رسید .. امیدوارم شما عزیزان هم تأیید کنید :)
اسم تیم رو هم بنا بر اسمی که مسعود جان پیشنهاد داد : Bita انتخاب کردیم ... هم به خاطر وجود کلمه ی Bit در این کلمه و هم این که در فارسی معنی "بی همتا" می دهد

منتظر همکاری دوستان هستیم

ایام به کام

----------


## mehran901

> سلام
> با توجه به صحبت هایی که با مسعود عزیز شد برای تعیین اسم پروژه و اسم تیم ، از میان چندین اسم اسامی زیر به عنوان اسم پروژه و اسم تیم انتخاب شدند:
> نام پروژه : Hypersia به فارسی هایپرشیا که از کلمه ی انگلیسی Hyper به برگردان فارسی "بیش از حد" و Persia به معنی ایرانی ساخته شده ...
> یعنی Hyper + Persia = Hypersia
> این اسم توسط بنده پیشنهاد داده شد که به تأیید بنده و مسعود عزیز رسید .. امیدوارم شما عزیزان هم تأیید کنید :)
> اسم تیم رو هم بنا بر اسمی که مسعود جان پیشنهاد داد : Bita انتخاب کردیم ... هم به خاطر وجود کلمه ی Bit در این کلمه و هم این که در فارسی معنی "بی همتا" می دهد
> 
> منتظر همکاری دوستان هستیم
> 
> ایام به کام


درود به شما ، ولی فکر نمیکنین انجام این چنین پروژه ای جز کسب تجربه فایده دیگه ای نداره ؟ 

درواقع اگه مسئله native کار کردن باشه که راه های بهتری هست مثلا استفاده از دلفی که در ورژن های اخیر شاهکاریه یا همین طور سی پلاس پلاس ، 

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

اگه جوابتون مثبته ، 100% موفقیتی نسبی به دست میارین  .. و انشالله موفق باشین

----------


## بهروز عباسی

درود به همه (بعد از مدت ها مجدداً :لبخند: )

من دیگه وقت نکردم پست های جدید رو بخونم ، دیدم دوباره این تاپیک بالا آمده گفتم یه چیزی بگم ،من اول اعلام آمادگی کردم باید بگم نیستم دیگه :کف کرده!:  ،چون خیلی سرم شلوغه.

یه نکته (شاید قبلاً هم گفته باشم) ؛ هیچ وقت نمیشه دست MS رو خوند ها توسعه همچین ابزاری برای برنامه نویسی روی Platform این شرکت یه کم ریسکش زیاده ،اگر هم این پروژه به سر انجام برسه یهو میبینی MS پشتیبانی نمیکنه.

توی قوانین سایت آمده که :از کلماتی که موجب دلسردی کاربر میشه استفاده نکنید . با این حال باید بگم اون زمانی رو که قرار بذارید روی این پروژه بذارید روی یادگیری یه زبان دیگه ،خداییش وقط زیادی نمیبره منم اول MS VB 6 کار میکردم بعد خودمد پورت کردم :متفکر:  روی دلفی بعد C , ++C الانم کم کم دارم یه نگاهی به Python میندازم ،خلاصه خیلی سخت نیست.

درسته این زبان برای خیلی از شما یک چیز خاص داره ،این به خاطر اینه که فقط بهش عادت کردین اگه مثلاً یه برنامه پایگاه داده ای با Delphi بنویسی اون موقع می فهمی این کجا و اون کجا دیگه اسم VB رو هم نمیاری .


در کل هرکی هرکاری میکنه امید وارم موفق باشه.

----------


## Jarvis

ضمن عرض خسته نباشید به دوستان عزیزی که با صحبت هاشون موج منفی صاتع میکنن فقط :| و ممنون از تو بهروز جان ...
راستش من همیشه به این فکر میکردم که چرا فتوشاپ رو کشورای خارجی می نویسن ... و ایران هیچ نرم افزاری نداره که توی جهان مطرح باشه ... کاربراش توی سطح جهان باشن ... نه فقط ایران!
چرا صنعت نرم افزار ایران پیشرفت نکرده .. که وقتی اسم ایران میاد بگن نه ... برنامه نویسای ایرانی هم می تونن .. قدرتشو دارن و اگه بخوان می تونن فتوشاپ رو هم بنویسن ... ولی چون هست نمیان وقت بزارن روش ...
چرا هیچ نرم افزاری نداریم ... یه نرم افزاری که حداقل به جهان ثابت کرده باشیم ما هم می تونیم ... بابا به خدا نقطه ی صفر برنامه نویسی بر میگرده به ایرانیا ... خوارزمی کی بود ؟ الگوریتم که ابتدایی ترین نقطه ی برنامه نویسیه از اسم خوارزمی گرفته شده ...
این خارجیا که چیزی نداشتند که ... ایرانیا بودن که از قدیم این همه ریاضیدان و منجم پرورش میدادن ... 
بگذریم ...
ایران توی تحریمه قبول - نیاز به سرمایه هست قبول - نیروی متخصص میخواد قبول ... ولی ما *باید* به جهان ثابت کنیم که قدرت برنامه نویسی مون بالاست ...
یعنی ما کمتر از هند هستیم ؟ که میاد آنتی ویروس Quick Heal رو میزنه و کلی هم فروش میکنه ... هند که توی تاریخ هم همیشه زیر سلطه ی یه کشور دیگه بودن ...
یکم به ایران فکر کنیم ... زمانی که 44% جهان *فقط* ایران بوده ... یعنی یه چیزی حدود یک سوم جهان فقط یه کشور بوده ... ما کشوری بودیم که قدرت زیاد مشخصه ی کشورمون بود ...
الان چی ؟ اومدیم رشته ی کامپیوتر که چی بشه ؟ اومدیم این حرفا رو بهم بزنیم و مانع پیشرفت پروژه های بزرگ بشیم ... ؟ اومدیم با این حرفامون جلوی پیشرفت خودمون رو بگیریم و جرئت ریسک رو از خودمون بگیریم ؟
یه نگاهی به شرکت Embarcadero بندازید ؟... همه دارن مسخرش میکنن ... مخصوصا سیاست های غلطی که اخیراً داره روی دلفی پیاده میکنه ... ولی یه شرکت بزرگ نرم افزاری محسوب میشه...
چرا ما توی ایران ، همون Embarcadero رو هم نداریم ... نمیگم مایکروسافت و اپل و اینا ... اونا پیشکش ... ولی شرکتی مثل Adobe .. Autodesk .. Embarcadero .. Mozilla .. ESET ... کو ؟ نداریم ...
دلیلش هم خود ما برنامه نویسا هستیم که همت نمی کنیم و فقط به فکر خودمون هستیم .. خارجیه با این فکر که فلان پروژه باعث پیشرفت خودش ، کشورش و مردمش میشه میاد توی پروژه ای مث Photoshop .. 3Ds Max شرکت میکنه و اسم اون شرکت رو بالا میبره ... ما ایرانیا هم اینجا پشت سیستم هامون نشستیم .. یا وبسایت میزنیم ... یا اگه خیلی هنر کنیم نرم افزار حسابداری و مالی می نویسیم ...
دلم پره ...

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

ختم کلام .. یا علی گفتیم و شروع کردیم ... با توکل به خدا هم کار می کنیم ... هر کس هم خواست می تونه کمک کنه

روز خوش!

----------


## Jarvis

در ضمن ، اینم یادم رفت بگم ...
ما هم اگه یه کاری رو برنامه ریزی شده و مهندسی شده پیش ببریم .. مطمئن باشید ما هم می تونیم مث اونا یا حتی بهتر .. نرم افزار های پیشرفته بنویسیم ...

حتما باید تحت فشار قرارمون بدن تا به خود بیایم ؟ :|

----------


## Jarvis

در جواب *httplistener* عزیز باید بگم ... اگه از نظر شما این ایده خوب نیست یا به صرفه نیست یا هر چیزی ... خب شما یه ایده به ما بدید ... ولی به بزرگی همین پروژه باید باشه ...

----------


## matrix-program

> توی امضاتون چیزی به اسم حمایت نمی بینم  ... شما برو همون خنده رو ادامه بده ... اومدی ما رو مسخره میکنی ؟


 معذرت :خجالت: 
اما  خوب حمایت نیازه (حمایت مالی که اینجا وظیفه ی دولته تا نوآوران را حمایت  کنه) مث اینه که شما بخوای یه شرکت بزنی اما پول نداشته باشی
اگه پول بود خوب خودمون یه کامپایلر ملی میسازیم(چیزی که داریم(البته من یکی که ندارم)هنره و دانشه.فقط پول نداریم)
یه کلیپ دیروز تو نارنجی دیدم 
http://narenji.ir/18728-%D9%86%D8%A7...DB%8C%D9%84%29
اینا برای فوتبالشون اینقدر مایه میذارن و *حمایت میکنن* و تو فوتبال هم خیلی  موفق هستن
ما (تو نرم افزار) چیمون از اینا کمتره؟؟؟؟

----------


## Jarvis

> معذرت
> اما  خوب حمایت نیازه (حمایت مالی که اینجا وظیفه ی دولته تا نوآوران را حمایت  کنه) مث اینه که شما بخوای یه شرکت بزنی اما پول نداشته باشی
> اگه پول بود خوب خودمون یه کامپایلر ملی میسازیم(چیزی که داریم(البته من یکی که ندارم)هنره و دانشه.فقط پول نداریم)
> یه کلیپ دیروز تو نارنجی دیدم 
> http://narenji.ir/18728-%D9%86%D8%A7...DB%8C%D9%84%29
> اینا برای فوتبالشون اینقدر مایه میذارن و *حمایت میکنن* و تو فوتبال هم خیلی  موفق هستن
> ما (تو نرم افزار) چیمون از اینا کمتره؟؟؟؟


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

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

----------


## m.4.r.m

در مورد لینوکس اینارو بخونید خانم Alipoor تا ببینید که لینوکس رو چند برنامه نویس مفت و رایگان و OpenSource کار کردند و در اول لینوکس به عنوان یک پروژه دانشجویی بود که الان لینوکس شد شاخ سیستم عامل ها
http://fa.wikipedia.org/wiki/%D9%84%...88%DA%A9%D8%B3

----------


## Jarvis

در بحث مالی ، ما در طول تاریخ همیشه با این مشکل مواجه بودیم ... از همه ی جهان .. آنتونی رابینز ... کارل بنر ... رندی گیج ... یا حتی افراد مشهور تری مثل چیرو هوندا که می تونید خودتون زندگیشون رو بررسی کنید ...
مثلا زندگی چیرو هوندا رو ببینید : http://loknat.org/forum/showthread.php?tid=584
فقیر بوده ... مشکل مالی داشته ... ولی نا امید نشده .. نگفته نمیشه ... ادامه داده و با مشکلاتش مبارزه کرده ...

بله.. کار زحمت داره ...
بحث مشکلات رو ادامه ندید خواهشاً ... تاپیک از موضوعش خارج میشه ...
هر کس میخواد کمک کنه ... هر کس هم نمیخواد .. از کنار تاپیک بگذره ...

----------


## matrix-program

> من با نظرتون موافقم ... این که حمایت نیازه .. حمایت مالی ... موافقم ...  ولی وقتی دولت ما حمایتمون نمیکنه ... باید همینطور بشینیم و همدیگه رو  نگاه کنیم ؟ لینوکس چجوری لینوکس شد ؟ با حمایت مالی دولتش ؟


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

----------


## Jarvis

> بله حرف شما متین ولی سرمایه چی ؟پیشنهادی دارید؟
> منم با حرف شما موافقم راه حل اینه که خودمون رو ثابت کنیم اون موقع سرمایه گزار از در و دیوار میریزه حالا سوال اینه که چطوری


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

ما باید پروژه رو شروع کنیم ... اون رو تا یه سرحدی پیش ببریم .. الان 4-5 نفر بیشتر نیستیم!

----------


## m.4.r.m

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

----------


## amin32

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

----------


## matrix-program

خیلی ممنون که به فکر ما هستید آقای *httplistener* :لبخند: 
دنبال vb7 هستیم چون vb6 کم کم به قول خودمون داره از رده خارج میشه(توسط این مایکروسافت لعنتی)
مایکروسافت هرچی ساخت فرداش منسوخش کرد
اما ما چندین سال از عمرمون رو گذاشتیم پای این زبان و هنوز سینتکس اونو دوس داریم و به اون عادت داریم

اکثر  ما ها اومدیم زبان های خارجه(بخصوص انگلیسی) را یاد گرفتیم و بعد پا به  این عرصه گذاشتیم چون بیشترین و مفید ترین منابع موجود انگلیسی هست

من کی حرف از تنفر از این سینتکس زدم فقط گفتم داره منسوخ میشه

من به خاطر این از رده خارج شدن دارم کم کم به سی شارپ کوچ میکنم(بهتر بگم کوچ کردم)

الان هم توانایی هام رو pm میکنم

----------


## Jarvis

> منم با نظر بقیه دوستان موافقم به نظر من هم انجام این کار صرفا وقت تلف کردنه 
> و البته بعید هم می دونم شما با این سطح برنامه نویسی که دارین بتونین این کارو بکنین!(از  پست ها معلومه که نه با assembly کار کردین نه c/C++‎‎ !!(
> نوشتن یک زبون جدید کار هر کسی نیست...
> بهتره وقتتون رو بزارین روی یک پروژه عملی و کاربردی تر.... !


 خب .. بالفرض که ما از این پروژه هم صرف نظر کردیم ... اومدیم اینجا
https://barnamenevis.org/showthread.p...7%D9%86%DB%8C-...
خواستیم توی این زمینه کار کنیم ... گفتن فایده نداره ...
کامپایلر رو هم که میگید فایده نداره ...
الان بخوایم بگیم روی یه مرورگر کار کنیم میگید Chrome  و Mozilla Firefox هست ... بگیم نرم افزار طراحی وب .. میگید Dreamweaver هست ... بگیم مدیریت دانلود میگید IDM هست ...
روی چی بریم کار کنیم ؟ وقتمون رو بزاریم روی یک پروژه عملی و کاربردی تر.... مثل چی ؟

----------


## بهروز عباسی

درود به همه



> ضمن عرض خسته نباشید به دوستان عزیزی که با صحبت هاشون موج منفی صاتع میکنن فقط


هر کی یه نظری داره : :شیطان: 





> و ممنون از تو بهروز جان ...


خواهش میکنم :گریه: 



> الگوریتم که ابتدایی ترین نقطه ی برنامه نویسیه از اسم خوارزمی گرفته شده ...


الگوریتم  فقط یه اسمه ،و یه روش مهم کسی که بتونه ازش استفاده کنه این که آقای X  این کارو کرده و ایرانیا فلان و بهمان و خارجی های هیچی و ... به هیچ دردی  نمی خوره.



> یعنی ما کمتر از هند هستیم ؟


آره ،هند تو علوم کامپیوتری حرف زیاد داره بزنه.




> هند که توی تاریخ هم همیشه زیر سلطه ی یه کشور دیگه بودن ...


ولی  وقتی آزاد شدن قدر خودشون رو دونستن و از داشته هاشون درست استفاده کردن اونا  نخبه ها رو نگه میدارن ولی ما چی (مستند میراث البرتا رو دیدی یا همون بنده  خدایی که توی تاپیک پروژه آنتی ویروس مینالید ؟؟)
ما آدم مخ زیاد داریم  ولی نمی تونیم استفاده کنیم همه مغز های کره زمین توی ناسا هستن ،خود ناسا  42درصدش ایرانیه (آماره مال سال قبله که شندیم).




> زمانی که 44% جهان *فقط* ایران بوده ...


داشتم داشتم حساب نیست دارم دارم حسابه.اینا هم خیاله.




> چرا ما توی ایران ، همون Embarcadero رو هم نداریم ... نمیگم مایکروسافت و  اپل و اینا ... اونا پیشکش ... ولی شرکتی مثل Adobe .. Autodesk ..  Embarcadero .. Mozilla .. ESET ... کو ؟ نداریم ...


ما چیزای بهتری داریم که نه کسی میدونه یه و نخواهد دونست ، فقط داریم :افسرده: 




> در مورد لینوکس اینارو بخونید خانم Alipoor تا ببینید که لینوکس رو چند  برنامه نویس مفت و رایگان و OpenSource کار کردند و در اول لینوکس به عنوان  یک پروژه دانشجویی بود که الان لینوکس شد شاخ سیستم عامل ها


Linux  صرفاً به خاطر اینکه در زمان مناسب مطرح شد موفق شد و در مورد شاخ و دم بودن همچین مالی هم نیست :قهقهه: 
اگه چندتا برنامه نویس رایگان روش کار کردن برای این بود که نمی خواستن بابت Unix یا حتی Minix پولی بدن و هدف مفت خوری بود.




> مشکل مالی داشته ... ولی نا امید نشده .. نگفته نمیشه ... ادامه داده و با مشکلاتش مبارزه کرده ...


چرا راه دور میری تا من موندم ؟ :لبخند گشاده!: 




> ما بحثمون دنبال افرادی فعال و دوستانی که در زمینه اسمبلی واقعا کد نویس و آنالیزور قهاری هستند بودیم و هستیم


یه تیم طراحی و توسعه Compiler که کلاً آدم های کمی هستن تک و توک مثل 
* Anders Hejlsberg*





> خیلی *دید* دوستان به مسائل *کوتاهه* لطفا یکم دور برتون رو نگاه کنید


خیلی هم به دور نگاه کنیم چیزی نمیبینیم  :لبخند گشاده!: 




> کی گفته تو ایران فقط نرم افزار حسابداری و ... نوشته می شه


این  حالت کلیه ؛ اکثر سفارش ها توی ایران DB و حسابداری و نرم افزارهای  اختصاصی و لی روسیه اکثر برنامه نویس هاش سیستمی کار میکنن و ... .




> پس با این وجود کی پهباد آمریکا رو آورد پایین ؟


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



> دیدین تو تلویزیون تبلیغ می کنه می گه : "خبری تازه در راه است ... " فکر  کنم می خوان بگن جوانان عزیز ایرانی موفق به ساخت زبان برنامه نویسی بنام  خاله ماندگار شدن اونم تو انجمن برنامه نویس !


تلوزیون جک زیاد پخش میکنه.




> شما خودت الان سیستم عاملت خارجیه-کامپایلرت خارجیه-سیستمت خارجیه-....


اولین سیستم عامل ایرانی --> زمین یادت رفت  :چشمک:  ولی این AV که چند روزه خبرش اومده ایرانی 100% .



> از مدیران عزیز خواهشمندم تاپیک رو مدیریت کنن و از دوستانم میخوام که به پست های اضافی پاسخ ندن ...


نمیشه :لبخند گشاده!: 





> به امید خدا ما کارمون رو شروع می کنیم .. و ادامه میدیم ...


پشت کار خوبه ،امید وارم موفق باشید



> هر کاری مخالف و موافق داشته ... ما سر تاپیک شروع ساخت پروژه ی آنتی ویروس متن باز ایرانی ... هم همین بدبختی رو داشتیم!


د نشد دیگه ، توی اون بحث من از اول مخالف بودم ولی وقتی دیدم کار رو شروع کردید کمکتون کردم درسته یا نه ؟؟
ولی الان چی شد ،پروژه کجاست ؟ میدونم عباس سرش شلوغه ، به همین خاطر پروژه پر !
همش به خاطر شروع بدون برنامه ریزی .
من خودم یه نفری دارم AV میسازم انقدر تحقیق کردم که دیگه کچل شدم ولی اون پروژه ملی چی ؟؟ چکار کرده هیچی !! تازه قراره از DB دیگر AV ها استفاده بشه که *اگر* هم 100 درصد جواب بده تازه هیچ کاری نکرده !!
اگه خواستی بدونی چرا بیا توی همون تاپیک تا توضیح بدم.





> ایرانی می تواند و خواهد توانست


شرمنده ولی آنها که توانستند انجام دادند.



> بعضی از دوستان هنوز مفاهیم اولیه برنامه نویسی رو نمیدونن میگن یه هفته بهم وقت بدین یاد بگیرم  . اونوقت میخوان تو نوشتن کامپایلر کمک کنن


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



> بله - دیگه لازم نمی بینم و شما را در این حد که بحث کنم ! فقط می تونم بگم  خیلی متاسفم *! البته از نام پروفایل و تصویر پروفایل تون از این بیشتر  توقع نبود !*





> *پروفایل شما موردش از واسه بنده بیشتره بیخود گیر ندین.*


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





> (توسط این مایکروسافت لعنتی)
> مایکروسافت هرچی ساخت فرداش منسوخش کرد


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



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


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



> خب .. بالفرض که ما از این پروژه هم صرف نظر کردیم ... اومدیم اینجا





> خواستیم توی این زمینه کار کنیم ... گفتن فایده نداره ...


توضیح دادم چرا اون حرفا رو زدم و گفتم فایده نداره ، ولی حالا که شروع شده باید ادامه پیدا کنه یا نه ؟
AV اولویت بالاتری نسبت به زبان داره ،اگه مردونه می خواین اسم Iran بالا باشه بیاین روی همین AV کار کنیم ، برای این کار تخصص لازمه دارین ؟؟ توی Compiler چطور ؟؟




> الان بخوایم بگیم روی یه مرورگر کار کنیم میگید Chrome  و Mozilla Firefox  هست ... بگیم نرم افزار طراحی وب .. میگید Dreamweaver هست ... بگیم مدیریت  دانلود میگید IDM هست ...
> *روی چی بریم کار کنیم ؟ وقتمون رو بزاریم روی یک پروژه عملی و کاربردی تر.... مثل چی ؟*


این بهترین سوال بود (قسمت قرمز) ، الان دنیا طالب امنیته ! همین .

البته همون پروژه ها رو هم اگه جای پیشرفت داشته باشه میشه روشون کار کرد یعنی Chrome رو بهینه تر کینم نه اینکه دوباره بسازیمش .


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

----------


## BORHAN TEC

سلام



> در ضمن ساختن مرورگر و مدیریت دانلود همچین کار سختیم نیست یک نفریم میشه ساخت !


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

در هر صورت. از همون اول که این تاپیک شروع شد به این فکر بودم که در این پروژه به صورت داوطلبانه همکاری کنم. مدت ها است که علاقمند هستم که در یک پروژه واقعی ساخت کامپایلر همکاری کنم. اگر این بحث و گفتگوهای عمومی به پایان رسید و قضیه جدی تر شد خوشحال می شوم که خبرم کنید. فعلاً میتونیم از ساخت کامپایلر برای x86 شروع کنیم و بعد x64 و بعد هم MAC و بعد هم Linux و سپس ARM.

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

----------


## سید حمید حق پرست

سلام علیکم
پیشنهاد میکنم به جای اینکار به نوشتن پروژه علمی تری فکر کنید.
الان که C#‎ و vb.net هست که از نظر بنده از vb6 خیلی آسونتر هستند و به عنوان مثال یک صفحه کدی که در vb6 مینویسیم در C#‎ میشه با چند خط نوشت!
البته نمیگم که vb6 استفاد ه نکنید یا استفاد ه ای ندارد ! نظر من اینه که زبانهای دیگه هم بخونید!! من خودم vb6 که خوندم طی یک هفته با تماشای فیلم آموزشی که دانلود کرده بودم C#‎ یاد گرفتم چرا؟ چون vb6 بلد بودم و خیلی جاها کدهاشون شبیه همه و احت میشه درک کرد و بعد هم vb.net و delphi
اما هنوز هم بعضی از پروژه هامو با vb6 مینویسم (از 10 پروژه نزدیک 3 پروژه با vb6)
موفق باشد.

یا علی (ع)

----------


## بهروز عباسی

> در این پروژه افراد مجبور می شوند که به شکل خیلی اصولی تری به ساخت فریم  ورک ها بپردازند و طبیعی است که سطح علمی افراد خیلی بالاتر خواهد رفت و  این بهتر از ساخت یک برنامه رایت CD و Defragmenter و ... است. شاید این  پروژه ارزش مادی نداشته باشه ولی در طولانی مدت نسبت به پروژه های کاربردی  دیگه ارزش بسیار بالاتری داره.


شاهین جان ،یعنی شما میگی این پروژه برای افزایش سطح بچه ها خوبه ؟؟ منظورم اینه که هدف فعلاً همین افزایش سطح باشه ؟

----------


## omidshaman

> مرورگر ساده!! و نه قابل قیاس با فایرفاکس و ...!
> .


البته شاید جالب باشه که بدونین اکثر مرورگر ها از  همین webkit استفاده می کنن! از جمله فایرفاکس و کروم!(البته کروم توی ورژنای بعد قراره از chromium استفاده کنه که تو ساخت اونم از webkit استفاده شده!)
http://en.wikipedia.org/wiki/WebKit
حالا به هر حال اگر قرار شد روی همین ساخت زبان کار کنین منم جاهایی که بتونم کمک می کنم. (به خاطر یاد گیری نه این که با ایدش موافق باشم...)

----------


## BORHAN TEC

> شاهین جان ،یعنی شما میگی این پروژه برای افزایش سطح بچه ها خوبه ؟؟ منظورم اینه که هدف فعلاً همین افزایش سطح باشه ؟


آره.



> حالا به هر حال اگر قرار شد روی همین ساخت زبان کار کنین منم جاهایی که بتونم کمک می کنم. (به خاطر یاد گیری نه این که با ایدش موافق باشم...)


خوبه، به نظر من این پروژه در کوتاه مدت نمیتونه با محصولات خارجی رقابت کنه و من هم این را می دانم ولی اگه به صورت جدی روی این پروژه کار بشه شاید تا چندین سال دیگه حرفی برای گفتن داشته باشه و شاید هم نداشته باشه! ولی آنچه که مسلم است این است که تجربه همه ما با انجام این پروژه خیلی بیشتر خواهد شد. من هم از همین امروز تحقیقاتم را برای ساخت یک کامپایلر 32 بیتی با پشتیبانی از زبان Basic شروع خواهم کرد. به نظر من اسم این پروژه رو IR-OBASIC بزاریم. نظر دوستان چیه؟ کسی نظر دیگه ای داره؟
در این اسم IR مخفف IRAN و O مخفف Objective و BASIC هم که مشخصه.

----------


## محسن واژدی

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

موفق باشید.

----------


## Jarvis

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



> ما چیزای بهتری داریم که نه کسی میدونه یه و نخواهد دونست ، فقط داریم


ما به چیزایی که داریم و خودمون نمی دونیم فعلا کاری نداریم ... به اونایی که نداریم و خارجیا دارن کار داریم ... صنعت نرم افزار ضعیف ! .. صنعت خودروسازی ضعیف ... و...




> د نشد دیگه ، توی اون بحث من از اول مخالف بودم ولی وقتی دیدم کار رو شروع کردید کمکتون کردم درسته یا نه ؟؟


بله درسته ... دست شما هم درد نکنه .. خیلی هم ممنون




> ولی الان چی شد ،پروژه کجاست ؟ میدونم عباس سرش شلوغه ، به همین خاطر پروژه پر !
> همش به خاطر شروع بدون برنامه ریزی .
> من خودم یه نفری دارم AV میسازم انقدر تحقیق کردم که دیگه کچل شدم ولی اون  پروژه ملی چی ؟؟ چکار کرده هیچی !! تازه قراره از DB دیگر AV ها استفاده  بشه که *اگر* هم 100 درصد جواب بده تازه هیچ کاری نکرده !!
> اگه خواستی بدونی چرا بیا توی همون تاپیک تا توضیح بدم.


خب شروع کننده ی پروژه عباس بود و این مسائل به اون مربوط میشه ... باید به خودش بگی...
این مسائل رو توی همون تاپیک بگیم بهتره




> من ایده هام رو نمی تونم با کسی به اشتراک بزارم . (ایده ای که به اشتراک گزاشته بشه دیگه ایده نیست!)
> شما خودتون چند نفرین یعنی ایده از این بهتر پیدا نکردین؟!


اگه بحث ایده باشه .. نه ایده ای پیدا نکردیم ... ایده ای که دهن پر کن باشه و بتونه ثابت کنه که ایرانیا توی برنامه نویسی قوی هستن .. نه پیدا نکردیم ...



> امدیمو اصلا بعد 2-3 سال ساختین به نظرتون کسی حاضر میشه با این زبون من در  اوردی شما کار بکنه (چه چیز جدیدیو قرار ارائه بده که ارزش یاد گرفتن رو  داشته باشه؟!)


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



> قرار نیست که چیزی که قبلا اختراع شده رو بیایم بدترشو دوباره از 0 اونم بدتر بسازیم !





> *برای یه شخص موفق ، نیازی نیست که محصولش مشابه داره یا نه ........
>  مگه وقتی جیمیل اومد ، یاهو نبود ؟! قبل فایرفاکس ، اینترنت اکسپلوره نبود؟*





> به نظر من اسم این پروژه رو IR-OBASIC بزاریم. نظر دوستان چیه؟ کسی نظر دیگه ای داره؟


شاهین جان من قبلا با مسعود ( شروع کننده ی تاپیک ) در مورد اسم پروژه صحبت کردم ... ( حدود 2 روز پیش ) قرار شد اسم پروژه ترکیب یک اسم ایرانی و یک اسم خارجی باشه ... اسم خارجی رو گفت بزاریم Hyper بعدش من گقتم اینو با Persia ترکیب کنیم و بزاریم Hypersia که هر دوتاش باشه ... اونم موافقت کرد ... برای تیم هم اسم Bita رو پیشنهاد داد ... چون Bit داره  :لبخند گشاده!:  و توی فارسی هم معنی خوبی داره
توی این پست می تونی ببینی :
https://barnamenevis.org/showthread.p...=1#post1813306

----------


## m.4.r.m

به جای این حرفا و چه کنم چه کنم ها بگید ببینیم هر کدومتون چقدر از شما ها به اسمبلی مسلط هستید ؟ به جای این حرفا هر کسی یه اجر رو هم بزاره الان ساختمون تموم شده بود

----------


## BORHAN TEC

> به جای این حرفا و چه کنم چه کنم ها بگید ببینیم هر کدومتون چقدر از شما ها به اسمبلی مسلط هستید ؟ به جای این حرفا هر کسی یه اجر رو هم بزاره الان ساختمون تموم شده بود


 از همین حالا من تحقیقاتم رو در مورد ساخت Front-End و Optimizer مربوط به کامپایلر رو شروع می کنم(اگر این کار به درستی صورت بگیره Port کردن کامپایلر روی پلتفرمهای مختلف زیاد سخت نخواهد بود و میشه کامپایلری برای سایر محیطها مثل Mac و Linux هم تولید کرد). بهتره که اول یک قسمت رو در SourceForge یا GitHub درست کنیم و کدها رو در اونجا قرار بدیم. کسی میتونه زحمت این کار رو بکشه و کارهای هماهنگی تیم رو انجام بده؟ به نظرم بهتره که یک قسمتی بسازیم که به جای این همه بحث های الکی و بی مورد کسانی که واقعاً و واقعاً مشتاق هستند که در این پروژه همکاری کنند در اون بخش بیان و فقط پیرامون مباحث فنی در مورد این پروژه بحث کنیم و بحث های عمومی و پیش پا افتاده اونجا صورت نگیره.

----------


## m.4.r.m

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

----------


## Jarvis

> به جای این حرفا و چه کنم چه کنم ها بگید ببینیم هر کدومتون چقدر از شما ها  به اسمبلی مسلط هستید ؟ به جای این حرفا هر کسی یه اجر رو هم بزاره الان  ساختمون تموم شده بود


خب من که از اسمبلی هیچی بلد نیستم ... ولی خیلی دوست دارم توی این پروژه کمک کنم ... حتی یادگیری اسمبلی رو هم خیلی دوست دارم ...
ولی خب فعلا که اسمبلی بلد نیستم اومدم توی Source Forge دارم براتون یه قسمتی رو راه اندازی میکنم ...




> از همین حالا من تحقیقاتم رو در مورد ساخت Front-End و Optimizer مربوط به  کامپایلر رو شروع می کنم(اگر این کار به درستی صورت بگیره Port کردن  کامپایلر روی پلتفرمهای مختلف زیاد سخت نخواهد بود و میشه کامپایلری برای  سایر محیطها مثل Mac و Linux هم تولید کرد). بهتره که اول یک قسمت رو در  SourceForge یا GitHub درست کنیم و کدها رو در اونجا قرار بدیم. کسی میتونه  زحمت این کار رو بکشه و کارهای هماهنگی تیم رو انجام بده؟ به نظرم بهتره  که یک قسمتی بسازیم که به جای این همه بحث های الکی و بی مورد کسانی که  واقعاً و واقعاً مشتاق هستند که در این پروژه همکاری کنند در اون بخش بیان و  فقط پیرامون مباحث فنی در مورد این پروژه بحث کنیم و بحث های عمومی و پیش  پا افتاده اونجا صورت نگیره.


من پیشنهادم اینه که هر کسی مقاله ای پیدا کرد اینجا بزاره که دوستان دیگه هم استفاده کنن ... کاری که بهروز عباسی عزیز هم میکنه ...
می تونیم توی بخش Open Source یه تاپیک اختصاصی براش بزنیم ...
ولی در مورد Source Forge من این کار رو انجام دادم ... اسمبلی که بلد نبودم ... گفتم همین یه کار که حالا از دستم بر میاد رو انجام بدم ...
در مورد هماهنگی هم بنده تا حدی که بتونم کمک میکنم ...

----------


## بهروز عباسی

قبلاً توی یه سایت اسمش یادم نیست (از مسعود بپرسید )یه گروه ساختیم که به صورت مسنجر باهم بحث میکردیم !! اون چیز خوبی بود

یه سوال مگه قرار نشد که یک مفسر ساخته بشه ؟؟

----------


## Jarvis

*در مورد اسمی که پیشنهاد دادم کسی نظری نداره ؟میخوام صفحه ی SourceForge اش رو درست کنم ... باید اسم پروژه وارد بشه ...

ممنون میشم نظرات رو اعلام کنید
*

----------


## Jarvis

> قبلاً توی یه سایت اسمش یادم نیست (از مسعود بپرسید )یه گروه ساختیم که به صورت مسنجر باهم بحث میکردیم !! اون چیز خوبی بود


RaidCall ????  :لبخند گشاده!: 



> یه سوال مگه قرار نشد که یک مفسر ساخته بشه ؟؟


نه ... قرار شد همون کامپایلر باشه ...

----------


## بهروز عباسی

*حالا که انجام پروژه حتمی شد به نظرم بهتره این تاپیک کلاً حذف بشه و یه تاپیک جدید و با محتوا ایجاد کنید*

----------


## m.4.r.m

آخه مشکل اینجاست صاحب پست معلوم نیست کجا داره چی کار میکنه  :لبخند گشاده!:  چت هم پیداش نیست من بهش خبر بدم مسعود خودش باشه بهتره .

----------


## BORHAN TEC

> یه سوال مگه قرار نشد که یک مفسر ساخته بشه ؟؟


من ایده بهتری دارم. سعی کنیم که برای ساخت کامپایلر تا حدود زیادی از LLVM و ساختار PAX Compiler ایده بگیریم. به نظر من بهتره که نحوه کامپایل شدن برنامه رو به عهده کاربر نهایی بزاریم. در این مورد دو حالت پیش می یاد:
1- اگر کاربر مشخص کنه که می خواد برنامش کامپایلری باشه، این موقع کامپایلر یک فایل اجرایی مستقل تولید می کنه.
2- اگر کاربر بخواد که برنامش مفسری باشه، کامپایلر یک کد میانی تولید میکنه که این مورد باید توسط یک مفسر که از یک قسمت + Backend ایجاد شده استفاده میکنه اجرا بشه. انجام این کار به نظر من بهتره. در این میان خود به خود ساختاری به وجود میاد که برنامه کاملاً می تواند حالت دینامیک داشته باشد.

این موارد در محصولاتی مانند PaxCompiler وجود دارد و کاملاً هم قابل پیاده سازی است. این روش می تواند از تمامی ویژگی های مثبت کامپایلر و مفسر استفاده کند و به نظر من از لحاظ تئوری بهتر از ساختار کامپایلر های دات نتی و جاوایی و سایر محصولات کامپایلری مثل کامپایلر دلفی و MinGW و ... است. به نظرتون چطوره؟

----------


## Jarvis

خوبه ... روی همین کار کنید ... می تونید یه سری به SF بزنید و از سورس پروژه هایی که شبیه هستند استفاده کنید ... مسعود گفت که درگیر درس و اینا هستش ولی سر میزنه ...

----------


## Jarvis

لینک SourceForge ـه پروژه ... https://sourceforge.net/projects/hypersia/

----------


## Jarvis

من قبلا گفته بودم هر کاری از دستم بر بیاد انجام میدم ...
امروز یه مقداری وقت داشتم ... گفتم مقالاتی که در مورد کامپایلر هستش رو جستجو کنم و اینجا لینکشون رو بزارم ... شاید یه کمکی باشه به دوستان .. من که در حد شما نیستم 
http://bookos.org/book/462272/d9af86
http://bookos.org/book/463739/3a23e3
http://bookos.org/book/490317/b8e1dc
http://bookos.org/book/491311/d805e2
http://bookos.org/book/495674/21e768
http://bookos.org/book/496162/d08136
http://bookos.org/book/501264/17eb1a
http://bookos.org/book/507417/08135c
http://bookos.org/book/507451/40f78c
http://bookos.org/book/507481/d78386
http://bookos.org/book/514999/755de4
http://bookos.org/book/531455/3dde16
http://bookos.org/book/531949/40e8e9
*Compiler design: theory, tools, and examples*

*Algorithms for compiler design*

*Compilers and compiler generators: an introduction with C++‎*

 *A basic course on compiler principles*

 قابل شما رو هم نداره

----------


## Jarvis

اینجا هم آقای شاهین عشایری لطف کردن یک پست در مورد سورس کامپایلر Free Pascal گذاشتن که بد نیست یه نگاهی بهش بندازید ... می تونیم روی سورس این کامپایلر نگاه کنیم و چیزای زیادی ازش یاد بگیریم
*لینک دانلود کد کامپایلر Free Pascal*

----------


## IamOverlord

سلام بچه ها!
قبل این که درگیر قسمت طراحی خود کامپایلر بشیم می تونیم (به نظرم بهتره) یه سری ماکرو (لینک) بنویسیم، که در آینده دقیقا بهتون می گم چه ماکروهایی...
>>> یه سری برای تبدیل انواع مختلف به هم هست... مثلا تبدیل Integer به Byte...
- - - باید ببینیم Type هامون چیا هستن؟ (لینک)
- - - بعد ببینیم چه طوری با Assembly به هم تبدیل کنیم اونا رو... من قبلا رو این موضوع کار احتمالا کردم...
- - - فعلا قراره حتما هر متغیری تعریف بشه قبل از استفاده... اما احتمالا در آینده متغیر هایی که تعریف نشدن رو از نوع Variant (لینک) در نظر می گیریم...
- - - نوع String در زبانمون رو باید مشخص کنیم و به خوبی ساختارش رو درک کنیم... (لینک)
- - - توجه کنید دیگه الان اون قدیما نیست! واحد ممیز شناور هست که برای کار با اعداد اعشاری به کمکمون می آد... (لینک) واحد های دیگه ای هم هست... از این ها هم مطلع بشید بد نیست! (لینک) (لینک)
>>> یه سری برای  جمع، تفریق، ضرب، تقسیم و یا اعمال دیگه ی هر نوع هست... مثل جمع دو Integer...
- - - خوب ماکروی عملگر ها رو بین انواع هم نوع تعریف می کنیم...
- - - بعدا می تونیم از تبدیل انواع استفاده کنیم...
- - - باید رفتار زبان در مقابل انواع رو تعیین کنیم... Weak-Typed بودن (لینک) و این جور چیزا...
>>> یه سری برای تخصیص حافظه ی پویا و کار با حافظه... (لینک)
- - - مسائل مربوط به حافظه در زبان های سطح بالا رو باید معادلش رو در Assembly درک کنید...
- - - مثلا چیا تو Stack هستن... چیا تو Heap... (لینک)
>>> برای آرایه ها...
- - - ساختار آرایه ها چه جوری باشه؟
- - - Redim کردن چه جوریه ساز و کارش؟
- - - نحوه ی کار Preserve...
>>> یه سری مربوط به فراخوانی ها...
- - - قرارداد های فراخوانی رو مطالعه کنید... (لینک) (لینک)
>>> ...
این ماکرو ها رو می نویسیم که بعدا موقع تبدیل سورس کد، خیلی راحت تر کدهامون رو به کدهای اسمبلی ای تبدیل کنیم که از این ماکرو ها توشون استفاده شده...
فکر کنم با انجام این کار، کارمون در حد ساختن مفسرها ساده می شه!
تازه می شه پروژه رو از دو جهت هم زمان پیگیری کرد... یکی از اول به آخر یعنی همون مسائل مربوط به تحلیلگر لغوی و تجزیه گر و این ها... یکی از آخر به اول یعنی نوشتن ماکرو های مورد نیازمون برای راحتی در موقعی که داره کد Asm تولید می شه...

ضمنا من یه مقدار وقت آزادم کم تره امسال... ولی فکر نکنید پیگیر پروژه نیستم...
همچنین دارم قسمت دوم آموزش برنامه نویسی Win32 با MASM رو ترجمه می کنم که به امید خدا در تاپیک مربوطه قرار می دم... اما هم وقت کم می آرم، هم حوصله می خواد!...

موفق باشید!

----------


## BORHAN TEC

سلام
PAX Compiler از زبان visual basic پشتیبانی می کنه و سینتکس پشتیبانی شده توسط اون چیزی شبیه VB.NET است. الان دارم یکسری تست بر روی این محصول انجام میدم تا ببینم چه نقاط مثبت و چه ضعفهایی داره. به نظر من از قسمتهای مختلف این محصول میشه ایده های خیلی خوبی گرفت. کد این کامپایلر هم در اینترنت وجود داره. این هم سایت سازنده:
http://www.paxcompiler.com/
نتایج حاصل از این تستها رو بعداً در همین تاپیک قرار خواهم داد.
در ضمن کار ساخت Parser رو هم شروع کردم که زمانی که به یه جای قابل قبولی رسید با توضیحات کامل قرار میدم که دوستان هم در توسعه اون مشارکت کنند.

به عنوان معرفی یک منبع فوق العاده برای ساخت کامپایلر توصیه می کنم که سایت زیر مورد مطالعه قرار بگیرد:
http://llvm.org/
یکی از مزایای خوب llvm این است که backend های آماده ای برای آن وجود دارد که باعث می شود که زیاد با اسمبلی درگیر نباشیم. برای ساخت کامپایلر با LLVM کافی است که کدهای سطح بالا را به کدهای IR تبدیل کنیم. IR تقریباً چیزی شبیه به دستورات زبان C است و نیازی نیست که خودمان نوع عای داده ساده را پیاده سازی کنیم، چرا که این موارد از قبل پیاده سازی شده اند. در مورد llvm فیلمهای آموزشی زیادی را می توان در youtube پیدا کرد.
موفق باشید...

----------


## بهروز عباسی

> همچنین دارم قسمت دوم آموزش برنامه نویسی Win32 با MASM رو ترجمه می کنم که به امید خدا در تاپیک مربوطه قرار می دم



این Tut هم بد نیست خیلی جمع و جوره  :کف کرده!:

----------


## Jarvis

سلام 
hypersia-logo1.png

----------


## amin32

> سلام 
> hypersia-logo1.png


ولی خوشم اومد با سلیقه ای داداش. :چشمک:

----------


## IamOverlord

> سلام 
> hypersia-logo1.png


عاشق سبکتم!
الکی شلوغ پلوغ نیست!
استراتژی گوگل و جدیدا مایکروسافت...

----------


## omidshaman

خیلی شبیه ایکون ویژوال استودیو نیست ؟

----------


## Jarvis

> ولی خوشم اومد با سلیقه ای داداش.


ممنون ... لطف دارید



> عاشق سبکتم!
> الکی شلوغ پلوغ نیست!
> استراتژی گوگل و جدیدا مایکروسافت...


قربونت مسعود جان ... لطف داری...



> خیلی شبیه ایکون ویژوال استودیو نیست ؟


 نه اون حلقه هاش به هم وصل شده ... حلقه هاش شبیه بیضی هستش ... جدیدا هم که دیگه اصن حلقه نیست ...! ( مال 2012 رو میگم )

----------


## UfnCod3r

صفه قبلو نگاه کردم حدودا پیش از 28 تا پست پاک شده. میدون جنگه مگه اینجا :قهقهه: 
حالا که قراره ی زبانی بسازید اخه چرا ب اسم وی بی چرا تقلید از وی بی
بهتر نیست خودتون ی سینتکس درست کنید
حالا هرچقدر هم زبان ضعیف باشه مهم نیست ولی به نظر من سعی کنید یه ایده نو بدین
نه این که کپی کنید

----------


## Jarvis

> صفه قبلو نگاه کردم حدودا پیش از 28 تا پست پاک شده. میدون جنگه مگه اینجا
> حالا که قراره ی زبانی بسازید اخه چرا ب اسم وی بی چرا تقلید از وی بی
> بهتر نیست خودتون ی سینتکس درست کنید
> حالا هرچقدر هم زبان ضعیف باشه مهم نیست ولی به نظر من سعی کنید یه ایده نو بدین
> نه این که کپی کنید


 کپی نمیکنیم عبدالله جان ...
اگه آیکون برنامه رو دیدی و از روی آیکون اینو میگی .. باید بگم آیکون هیچ ربطی به آیکون VS نداره و من اصلا قصد نداشتم تقلید کنم ... آیکون رو اگه دقت کنی بیشتر شبیه زنجیر هستش تا شبیه علامت بینهایت ( آیکون VS شبیه علامت بینهایت هستش ) ...
زنجیر هم معنای نماد نظم و پیوستگی و ... هستش
این کامپایلر داره از صفر نوشته میشه ... و قصد نداریم از VB6 تقلید کنیم ... شاید سینتکسش شبیه VB6 باشه ... ولی تقلید نیست ...
دلیل شباهت سینتکس هم اینه که عده ی زیادی با VB6 کار کردن و سینتکسش رو دوست دارن ... نمیشه بخوایم به یه سینتکس متفاوت مجبورشون کنیم ... پس هر چه سینتکس شبیه به VB6 باشه بهتره ...
ولی امکاناتی که VB6 نداره رو میخوایم بهش اضافه کنیم...

موفق باشید

----------


## amin32

در واقع بهتره کلمه vb6 رو به کار نبرید و بگید که زبانی از خانواده بیسیک هست.

----------


## IamOverlord

سلام!




> صفه قبلو نگاه کردم حدودا پیش از 28 تا پست پاک شده. میدون جنگه مگه اینجا
> حالا که قراره ی زبانی بسازید اخه چرا ب اسم وی بی چرا تقلید از وی بی
> بهتر نیست خودتون ی سینتکس درست کنید
> حالا هرچقدر هم زبان ضعیف باشه مهم نیست ولی به نظر من سعی کنید یه ایده نو بدین
> نه این که کپی کنید


حرفتو قبول دارم در مورد ایده ...
البته نباید گفت این که شبیه VB6 هست یعنی کپیه... چه بسا VB6 یه نمونه ی ضعیف از این بشه...  :لبخند گشاده!: 
اما در مورد ایده، خیلی دوست دارم فعلا که اول کار هستیم ایده هایی که جالبن و راحت تر هم پیاده سازی می شن بدین...
خیلی وقتا موقع برنامه نویسی یه سری ایده ها به ذهنم می رسه... مثلا اینا...
^ پشتیبانی داخلی از اعداد مختلط (Complex) و *Hyper* Complex که اعدادی فراتر از اعداد مختلط هستن... مثل Quaternion ها، Octonion ها و Sedenion ها...
^ پشتیبانی داخلی از *Hyper* Operator ها، مثلا Tetration که عملگر بعد از توان هست یا Pentation که عملگر بعد از Tetration هست... این جا رو ببینید...
^ شاید در فازهای بعدی پروژه، ارائه ی روشی ساده برای طراحی GUI با *Hyper*TML5...! 
^ قابلیت تعریف Type جدید برای متغیرهای عددی با دقت و اندازه ی دلخواه در 3 سوت...! 
...

----------


## Jarvis

اینم لوگوی تیممون ... 
البته با مخلفات گذاشتم .. گفتم شاید براتون جالب باشه ... 
http://img.majidonline.com/pic/294831/bita.png

----------


## darknes666

> سلام!
> 
> 
> 
> حرفتو قبول دارم در مورد ایده ...
> البته نباید گفت این که شبیه VB6 هست یعنی کپیه... چه بسا VB6 یه نمونه ی ضعیف از این بشه... 
> اما در مورد ایده، خیلی دوست دارم فعلا که اول کار هستیم ایده هایی که جالبن و راحت تر هم پیاده سازی می شن بدین...
> خیلی وقتا موقع برنامه نویسی یه سری ایده ها به ذهنم می رسه... مثلا اینا...
> ^ پشتیبانی داخلی از اعداد مختلط (Complex) و *Hyper* Complex که اعدادی فراتر از اعداد مختلط هستن... مثل Quaternion ها، Octonion ها و Sedenion ها...
> ...


دوست عزیز بازم قصد موج منفی ندارم.
ولی اعداد Hyper Complex به قدری پیچیده هستن که توی کل ایران فقط تو دبیرستان انرژی اتمی اونم بخش کوچیکش تدریس میشه.
اونوقت شما پشتیبانی ازش ایجاد میکنی که چه سودی داشته باشه؟

----------


## Jarvis

> در واقع بهتره کلمه vb6 رو به کار نبرید و بگید که زبانی از خانواده بیسیک هست.


 از خانواده بیسیک هم نیست .. چون قراره Open Source کار کنیم ... از طرفی میخوایم ثابت کار کنیم و تا جایی که میشه وابسته نباشیم...
اینجوری بهتره ... یه زبان برنامه نویسی قدرتمند ... به جای VB6 !!

----------


## amin32

الان چه کسانی  قراره در این پروژه کار کنن؟ به چی تسلط دارند؟ آیا دوستان با فازهای کامپایلر آشنایی دارند؟
راستش اگه وقت داشته باشم و *تعداد افراد گروه به اندازه کافی باشه* , خوشحال میشم فعالیت کنم. البته اگه وقت کنم.
خودم با بخشهای مربوط به backend و frontend و زبانهای مستقل از متن یک آشنایی نسبی دارم. البته متاسفانه سرم خیلی شلوغه.

----------


## omidshaman

> دوست عزیز بازم قصد موج منفی ندارم.
> ولی اعداد Hyper Complex به قدری پیچیده هستن که توی کل ایران فقط تو دبیرستان انرژی اتمی اونم بخش کوچیکش تدریس میشه.
> اونوقت شما پشتیبانی ازش ایجاد میکنی که چه سودی داشته باشه؟


 اره راست می گه دیگه من که تو عمرم اولین بار همچین اسمیو می بینم ! 
من تو همون اعداد مختلط که تو دانشگاه درس میدن موندم که اصلا به چه دردی می خورن دیگه سوپر مختلطش پیش کش !  :لبخند گشاده!: 
کسی می تونه توضیح بده کاربرد اعداد مختلط چیه اصلا؟!

----------


## amin32

> از خانواده بیسیک هم نیست .. چون قراره Open Source کار کنیم ... از طرفی میخوایم ثابت کار کنیم و تا جایی که میشه وابسته نباشیم...
> اینجوری بهتره ... یه زبان برنامه نویسی قدرتمند ... به جای VB6 !!


اما به نظر من وقتی دارید از سینتکس basic استفاده میکنید , زبان میشه از خانواده بیسیک. این دیگه فکر میکنم ساده باشه. مگه اینکه یک سینتکس جدید ارائه بدید. مثلا vb6 رو میشه گفت از خانواده بیسیک هستش.

----------


## Jarvis

> الان چه کسانی  قراره در این پروژه کار کنن؟ به چی تسلط دارند؟ آیا دوستان با فازهای کامپایلر آشنایی دارند؟
> راستش اگه وقت داشته باشم و تعداد افراد گروه به اندازه کافی باشه , خوشحال میشم فعالیت کنم. البته اگه وقت کنم.
> خودم با بخشهای مربوط به backend و frontend و زبانهای مستقل از متن یک آشنایی نسبی دارم. البته متاسفانه سرم خیلی شلوغه.


 فعلا که بنده هستم ... آقا مسعود ( IamOverlord ) ... آقای *شاهین عشایری* هم که از سواد زیادی در زمینه ی کامپایلر برخوردار هستند به تازگی بهمون پیوستن ...
همینطور *ho3ein.3ven* و *m.4.r.m* که تو کار زبان اسمبلی هستند ... البته جا داره از آقا *بهروز عباسی* هم تشکر کنیم که داره بهمون کمک میکنه ...
شما هم خوشحال میشیم همکاری کنید ... هر چند کم !

----------


## Jarvis

> اما به نظر من وقتی دارید از سینتکس basic استفاده میکنید , زبان میشه از خانواده بیسیک. این دیگه فکر میکنم ساده باشه. مگه اینکه یک سینتکس جدید ارائه بدید. مثلا vb6 رو میشه گفت از خانواده بیسیک هستش.


 نه ما قرار نیست از سینتکس basic استفاده کنیم ... شاید سینتکس ما شبیه VB6 بشه .. ولی صرفاً از سینتکس بیسیک استفاده نمی کنیم .. یه جور الهام گرفتن هستش .. وگرنه احتمال داره یه جاهایی از سینتکس رو از ++C الهام بگیریم .. یا مثلا از دلفی ... چون اینا هم از محبوبیت بالایی برخوردار هستند ... میشه برای یه سینتکس خوب ازشون ایده گرفت

----------


## darknes666

> اره راست می گه دیگه من که تو عمرم اولین بار همچین اسمیو می بینم ! 
> من تو همون اعداد مختلط که تو دانشگاه درس میدن موندم که اصلا به چه دردی می خورن دیگه سوپر مختلطش پیش کش ! 
> کسی می تونه توضیح بده کاربرد اعداد مختلط چیه اصلا؟!


کاربرد این اعداد خیلی زیاده.(مختلط)
از کشف بوزون هیگز بگیر تا مدار های کامپیوتر.
ولی مجموعه ی اعداد Sedenions جواب معادلات خیلی خیلی پیچده ای رو تو خودش داره.
کاربرد این مجوعه ی Sedenions تازه داره رو میشه.
این مجموعه اینقدر پیچیدست که مایکروسافت 3 سال داره رو یه هدر فایل برای این اعداد کار میکنه.(البته من خودم شک دارم که راست باشه)

ما تو ریاضی با مجمو عه های اعداد ریاضی آشنایی داریم ترتیبش طبق ویکی اینه:
Real numbers ----> Complex numbers----> Quaternions ----> Octonions ----> Sedenions

درضمن عملگر Tetration  چیزی به جز توان نیست.درواقع توان های تو در تو هست که پشتیبانی نمیخواد.
یه تابع ساده میتونه این کار رو انجام بده.

----------


## amin32

> فعلا که بنده هستم ... آقا مسعود ( IamOverlord ) ... آقای *شاهین عشایری* هم که از سواد زیادی در زمینه ی کامپایلر برخوردار هستند به تازگی بهمون پیوستن ...
> همینطور *ho3ein.3ven* و *m.4.r.m* که تو کار زبان اسمبلی هستند ... البته جا داره از آقا *بهروز عباسی* هم تشکر کنیم که داره بهمون کمک میکنه ...
> شما هم خوشحال میشیم همکاری کنید ... هر چند کم !


البته فکر میکنم در زمینه طراحی کامپایلر , آشنایی با زبانهای مستقل از متن و در کل نظریه زبانها و ماشینها از همه موارد مهمتر هست. یک نگاهی به این تاپیک بندازید بد نیست:
https://barnamenevis.org/showthread.p...سی-جدید

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

----------


## mehran901

> کسی می تونه توضیح بده کاربرد اعداد مختلط چیه اصلا؟!


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

----------


## Jarvis

> البته فکر میکنم در زمینه طراحی کامپایلر , آشنایی با زبانهای مستقل از متن و در کل نظریه زبانها و ماشینها از همه موارد مهمتر هست. یک نگاهی به این تاپیک بندازید بد نیست:
> https://barnamenevis.org/showthread.p...سی-جدید
> 
> اینجا بنده و IamOverlord عزیز خیلی تلاش کردیم تا دوستان دیگری رو که با این موارد آشنا هستن دعوت کنیم تا در پروژه سهیم باشن ولی ظاهرا کسی نبود و بنده مجبور شدم تقریبا به تنهایی پیاده سازی پروژه رو پیش ببرم که واقعا غیر ممکن بود. لطفا دوستان واضح مشخص کنن که آیا با این موارد آشنایی دارن؟


 خب مسلماً الان بچه ها تعدادشون بیشتره ... مثلا آقای عشایری هم از مسائلی که گفتید سر در میاره ...
فکر کنم بهروز هم بلد باشه ... ولی بنده اطلاعات زیادی ندارم ...
با همین تعداد هم میشه پیش رفت ... کم کم افرادی بهمون اضافه میشن .. مث همین الان!

یا علی

----------


## m.4.r.m

شاید نتونیم تو این زمینه مثل خیلی ها کد نویسی حرفه ای نداشته باشیم اما لاقل چند تا ذهن بهتر از یک ذهن کار می کنه ایده و ... در نوشتن کد های راحت تر میتونیم کمک حال باشیم . ما می توانیم

----------


## m.4.r.m

این سایت هم برای شروع بد نیست

http://compilers.iecc.com/crenshaw/

به صورت پاسکل و دلفی کد هاشو نوشته اما تغییر دادنش و مفهومش سخت نیست

----------


## SlowCode

> دوست عزیز بازم قصد موج منفی ندارم.
> ولی اعداد Hyper Complex به قدری پیچیده هستن که توی کل ایران فقط تو دبیرستان انرژی اتمی اونم بخش کوچیکش تدریس میشه.
> اونوقت شما پشتیبانی ازش ایجاد میکنی که چه سودی داشته باشه؟


 قصد نداری ولی میکنی :لبخند: 
اتفاقا به نظرم اگه از این موارد پشتیبانی کنه خیلی خوب میشه.
اگه قرار باشه این زبان مثل زبان های دیگه باشه طرفدار آنچنانی پیدا نمیکنه. به نظرم باید چیزی داشته باشه که برنامه نویس ها رو جذب کنه.
مثلا regx که وی بی تقریبا نداره(یه عملگر like هست اونم که...)بعد تو مباحث کلاس باید از وی بی برتر باشه و مباحثی مثل extends,implements,abstract رو پشتیبانی کنه.
مواردی زیادی وجود داره ولی بحث کردن در مورد اینا یکم زوده.

----------


## Jarvis

آره منم با محسن موافقم ... الان شما بخوای یه پروژه با VB6 بنویسی ممکنه بعضی جا ها کم بیاره ... ولی مثلا دلفی خیلی بهتره و احتمال این که کم بیاری به مراتب خیلی کمتر هستش...
به همین خاطره که میگم شکل کلی سینتکس می تونه شبیه VB6 باشه ... ولی کلمات کلیدی ... امکانات و... میتونن یه چیزی حداقل در حد دلفی باشن ...
---------
من به یه نفر از دوستانی هم که توی همین سایت می شناختم پیام دادم .. امیدوارم باهامون همکاری کنن...

----------


## darknes666

> قصد نداری ولی میکنی
> اتفاقا به نظرم اگه از این موارد پشتیبانی کنه خیلی خوب میشه.
> اگه قرار باشه این زبان مثل زبان های دیگه باشه طرفدار آنچنانی پیدا نمیکنه. به نظرم باید چیزی داشته باشه که برنامه نویس ها رو جذب کنه.
> مثلا regx که وی بی تقریبا نداره(یه عملگر like هست اونم که...)بعد تو مباحث کلاس باید از وی بی برتر باشه و مباحثی مثل extends,implements,abstract رو پشتیبانی کنه.
> مواردی زیادی وجود داره ولی بحث کردن در مورد اینا یکم زوده.


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

----------


## Jarvis

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


 مثلا ؟

----------


## darknes666

اضافه کردن inline assembly

----------


## amin32

الان خلاصه چی شد؟ با نظرات پراکنده دوستان که نمیشه روی کسی حساب کرد و پروژه رو شروع کرد. از روزی هم که تاپیک دوباره بالا اومده همش داره در مورد توجیه انجام این کار بحث میشه و به غیر از چند کار گرافیکی عالی جناب Mohammad Salehi  ( که خیلی مهمه ولی مربوط میشه به مراحل نهایی کار ) کسی پروژه رو استارت نمیزنه. مطمئن باشید یک چنین تاپیک شلوغی به نتیجه نمیرسه. من یک پیشنهاد دارم. یک تاپیک جدید زده بشه در بخش open source و در اون افرادی که مایل هستند به طور جدی در پروژه شرکت کنن , اعلام آمادگی کنن و تخصص خودشون رو در هر کدوم از بخشهای مورد نیاز مشخص کنند. یعنی:
1- نظریه زبانها و ماشینها
2- فازهای کامپایلر
3- زبان اسمبلی برای backend
4- زبانی که کامپایلر قراره با اون نوشته بشه ( که ظاهرا vb6 هست )
بخش گرافیک هم که فکر میکنم Mohammad Salehi عزیز کافی باشه.
اینجوری اگه به اندازه کافی افراد فعال رو دور هم جمع کنیم, میتونیم با خیال راحت یک یا علی بگیم و پروژه رو استارت بزنیم.
البته یک مشکل دیگه ای هم هست , اینکه هنوز ماهیت زبان مشخص نیست تاپیک به عنوان توسعه vb ایجاد شده. بعضی از دوستان میگن قراره یک زبان جدید ایجاد بشه. بعضی میگن شبیه به vb باشه. البته این رو بدونید که ایجاد یک زبان جدید با syntax منحصر به فرد , اونقدر که فکر میکنید آسون نیست و کلی وقت میبره. مخصوصا اگه بخوایم استاندارد باشه.خلاصه این رو بدونید تا زیر و بم زبان رو مشخص نکنیم , کامپایلری هم وجود نداره و بهتره هر چه زودتر تکلیفش مشخص بشه. البته با مشورت همگی.
اینها فقط  پیشنهاد بود ولی فکر نمیکنم غیر منطقی باشه!

----------


## Jarvis

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



> 4- زبانی که کامپایلر قراره با اون نوشته بشه ( که ظاهرا vb6 هست )


به احتمال زیاد VB6 نیست ...

----------


## amin32

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


پس به نظرم در ابتدای تاپیک بنویسید که "از دادن نظرات منفی از جمله : چرخ رو دوباره اختراع نکنید - این کار ایرانیها نیست و..... اکیدا خودداری فرمایید."

----------


## Jarvis

> پس به نظرم در ابتدای تاپیک بنویسید که "از دادن نظرات منفی از جمله : چرخ رو دوباره اختراع نکنید - این کار ایرانیها نیست و..... اکیدا خودداری فرمایید."


 بله اون رو که حتما می نویسم ...
یه سری موارد دیگه هم هست ...
مثلا افرادی که به صورت رسمی توی پروژه همکاری میکنن ..
وضعیت پروژه ( که تا کجا پیش رفته و چیا طراحی و تکمیل شدند )
لینک های مفیدی که بین کاربران رد و بدل میشه ...
و...

----------


## Jarvis

من یه Document Archive دارم ... توش یه سرچی کردم و مقالاتی که به درد میخوردن رو جدا کردم ...
می تونید دانلود کنید :
http://mssdh.xzn.ir/Programming%20Languages.zip
9.16 MB
یکیشون برای افرادی که چیزی از طراحی کامپایلر سر در نمیارن خیلی خوبه ... قشنگ توضیح داده

----------


## IamOverlord

سلام دوستان!

*در مورد اون عملگرها:*

همون طور که می دونید اول می گیم *جمع*... بعد می رسیم به *ضرب*... و بعد *توان*...
خوب *ضرب* ساده تر نوشتن یه همچین چیزیه: a+a+...+a
...و *توان* ساده تر نوشتن یه همچین چیزی: a*a*...*a
خوب تا حالا به این فکر کرده بودید که آیا ریاضی دان ها به بعد از این فکر کردن یا نه؟! خوب نمی دونم شاید بگید بی کاریه!... حداقل برای من که مسئله ی جالبیه...
مثلا تویه زبان Fortran از **** برای *توان* استفاده می شه... ما هم می تونیم از همین ایده استفاده کنیم و عملگر جدیدمون رو به صورت *^^* نمایش بدیم...
a^^7=a^a^a^a^a^a^a
توجه کنید که اولویت توان از آخر به اول هست یعنی از راست به چپ... وگرنه اگه از اول به آخر توان ها رو حساب می کردیم که اصلا نیازی به تعریف عملگر جدید نبود و می شد این رو به عنوان معادلش رو نوشت: a^a^6
خوب به این *^^* که گفتم می گن Tetration یا Hyper4... و خیلی سریع رشد می کنه... مثلا 3^3 کجا و 3^^3 کجا...!
بعد از این هم با همین روشی که گفتم عملگر جدید پیدا می شه...
به Hyper0 هم فکر کنید! ++C رو یادتون هست؟
اصلا قبل از Hyper0 چیزی هست؟
می شه برای رسم فراکتال ها هم ازشون استفاده کرد...
ضمنا همون طور که *منها* مخالف *جمع* هست و *تقسیم* مخالف *ضرب*، اینا هم عملگر مخالف دارن... البته همون طور که برای *توان*، هم *root* داریم هم *logarithm* برای اینا هم دو تا داریم: *super-root* و *super-logarithm*...
مسائل جالبیه اگه دقت کنید...

*در مورد اون اعداد:*

به طور خلاصه یه عددی تعریف می شه که با نماد *i* نشون داده می شه و فرض می شه که اگه این عدد ضرب در خودش بشه، حاصل بشه منفی یک: i^2=-1
در حالت کلی اعداد مختلط به این شکل نشون داده می شن: a+i*b که a و b دو عدد حقیقی دلخواه هست...
که اتفاقا خیلی هم کاربرد دارن این اعداد مختلط...
حالا نکته ی جالبی که هست اینه که شما می تونی جذر هر عدد منفی ای رو حساب کنی! با یه تعریف ساده و جمع و جور...
حتی شما می تونی logarithm اعداد منفی رو هم حساب کنی! که این برای من بسیار جالب بود...
حوزه ی اعداد طبیعی نسبت به جمع بسته است، یعنی شما هر دو تا عدد طبیعی رو که جمع کنی حاصلش عدد طبیعی می شه... اما نسبت به تفریق بسته نیست...
ولی اعداد صحیح، هم نسبت به جمع بسته هستن هم نسبت به تفریق... اعداد صحیح نسبت به ضرب هم بسته هستن، اما نسبت به تقسیم دیگه بسته نیستن...
ولی اعداد گویا هم نسبت به جمع و تفریق بسته هستن هم نسبت به ضرب و تقسیم بسته هستن البته به شرطی که کاری که می کنیم تعریف شده باشه... منظورم همین تقسیم بر صفر هست...
ولی  اعداد گویا نسبت به توان و رادیکال و لگاریتم بسته نیستن...
اما حوزه ی اعداد مختلط نسبت به همه ی اینایی که گفتم بسته هست! یعنی شما می خوای جمع بزن، لگاریتم بگیر، حتی سینوس و کسینوس رو حساب کن، ریشه ی یه عدد مختلط رو به فرجه ی یه عدد مختلط دیگه حساب کن،... حاصل عدد مختلط می مونه!
اما سوال جالب اینه که آیا حوزه ای بالا تر از اعداد مختلط هست؟ بله... و اتفاقا کاربرد هم دارن تو علم...
For this reason, quaternions are used in computer graphics,[11] computer vision, robotics, control theory, signal processing, attitude control, physics, bioinformatics, molecular dynamics, computer simulations, and orbital mechanics.Quaternion ها که چهارتایی هستن: a+b*i+c*j+d*k که i، j، k اجزاء موهومی هستن...
Octonion ها که هشت تایی هستن: a+b*e1+c*e2+d*e3+e*e4+f*e5+g*e6+h*e7
Sedenion ها که شانزده تایی هستن...
و خواص جالبی هم دارن! مثلا در Quaternion ها شما دیگه نمی تونی بگی لزوما a*b با b*a برابر هست...!
به ترتیب هر چی می ری جلوتر یه سری خاصیت از بین می ره... جالبه بدونید در حوزه ی Sedenion ها ممکنه دو عدد غیر صفر، حاصل ضربشون صفر بشه!
...

پشتیبانی داخلی از این چیزایی که گفتم جالبه... ضمن این که گفتم اینا کاربرد هم دارن...

----------


## IamOverlord

سلام!
خوب ظاهرا یکی باید بالا سرتون باشه... بزنه تو سرتون کار کنید!  :بامزه: 
خوب جناب *m.4.r.m* در حال حاضر مدیر پروژه هستن... اگه می خواید همکاری کنید، هر کار می گن گوش کنید... اگه خودم هم یه موقع نتونم بیام فروم با ایشون هماهنگ می کنم... هر چی گفتن حرفشون حرف منه!
یه مقدار از تنبلی در بیاید... فاز منفی رو بذارید کنار... تا ببینید چی کارا می تونیم بکنیم!

----------


## m.4.r.m

با تشکر مسعود عزیز ( IamOverlord ) 

منظور ایشون از مدیر پروژه این نبود که بنده شدم همه کاره و دوستان شدن فقط کد نویس و حرف گوش کن ، حرف ایشون به این معنی بود که یک تیم باید یک سرپرست داشته باشه برای مدیریت پروزه نه اعضای پروزه . امیدوارم کنار همدیگر بتونیم این پروژه رو به انتها برسونیم . من کوچیک همه دوستان با سابقه و حرفه ای انجمن هم هستم

----------


## IamOverlord

سلام دوستان...
کارمون راه افتاد!
گرچه می خوایم از Flat Assembler استفاده کنیم، اما پیشنهاد می کنم فعلا MASM32 رو دانلود کنید...
بعد که دانلود کردید برید این جا: masm32\m32lib
نیگا کنید! خیلی از چیزایی که لازم داریم از قبل هست!
برای مثال برای تبدیل DWORD به ASCII String این فایل رو ببینید: dw2a.asm

; ##################################################  #######################

      .386
      .model flat, stdcall  ; 32 bit memory model
      option casemap :none  ; case sensitive

        wsprintfA PROTO C :DWORD,:VARARG
        wsprintf equ <wsprintfA>

    .data
      fMtStrinG db "%lu",0

    .code

; ##################################################  #######################

dw2a proc dwValue:DWORD, lpBuffer:DWORD

    ; -------------------------------------------------------------
    ; convert DWORD to ascii string
    ; dwValue is passed as a value, direct, indirect or in register
    ; lpBuffer is the ADDRESS of the receiving buffer
    ; EXAMPLE:
    ; invoke dw2a,edx,ADDR buffer
    ; -------------------------------------------------------------
    
    invoke wsprintf,lpBuffer,ADDR fMtStrinG,dwValue

    ret

dw2a endp

; ##################################################  #######################

end

خیلی از چیز ها رو هم خود Windows برامون تدارک دیده! این جا از wsprintf استفاده شده در User32.dll...
در مورد wsprintf این جا رو ببینید: wsprintf function

غیر از این فایل های دیگه ای هم برامون تو masm32\m32lib هست... مثلا اینا رو ببینید:

dwtoa.asm : convert DWORD to ascii string
a2dw.asm : Convert decimal string into dword value
atofp.asm : Convert a string containing an ASCII representation of a floating point value to an 8-byte double precision number
fptoa.asm : Convert an 8-byte double-precision value to an ASCII string
...

----------


## m.4.r.m

ضمن خسته نباشید خدمت مسعود عزیز و دوستان :

اونطور که معلوم شد مسعود جان به یک سری یافته های جدید دست یافتن و معلوم شد یک سری فایل ها لازم به نوشتن نیست و همون طور که گفتن با برنامه Masm32 قرار هست کار رو شروع کنیم . از دوستانی که قصد همکاری دارند این برنامه رو دانلود کرده و طبق گفته های و مشورت های دیگر شروع به نوشتن کنیم تا برنامه استارت اصلی خودش رو بزنه . پس منتظر حضور همتون هستیم . به امید پیروزی

----------


## m.4.r.m

به نظر بنده قبل از شروع کار باید تقسیم کار بشه :
1- کد نویسی اسمبلی برای نوشتن کد های ASM و تبدیل به EXE پیشنهاد ( MASM یا FASM )

2- گروه دوم برنامه نویسی ترجمه ، گرامر و آنالیزور  ( زبان GOLD )

پس خواهشمندم کسانی که قصد همکاری دارند اعلام کنند تا تقسیم کار انجام بشه و تا سرعت بیشتری تو روند کار داشته باشیم و به امید خدا بتونیم این پروژه رو به پیش ببریم .

----------


## Jarvis

الان چی شد بالاخره ؟
پروژه رها شد ؟ یا داریم روی پروژه کار می کنیم ؟

به نظرم باید یه جایی ( غیر از این تاپیک ) رو به پروژه اختصاص بدیم و اونجا متمرکز کار کنیم ...

----------


## BORHAN TEC

من دارم یه کارهایی در مورد ساخت کامپایلر انجام میدم.

----------


## Jarvis

> من دارم یه کارهایی در مورد ساخت کامپایلر انجام میدم.


 خیلی خوبه ... پس بی زحمت گهگاهی یه گزارشی از کارتون بزارید ما هم فیض ببریم

----------


## IamOverlord

سلام دوستان!
من امسال کنکور دارم و دو سه ماهی می شه که مشغولم...
پس تقریبا نمی تونم کار زیادی بکنم برای این پروژه تا سال بعد...!

----------


## Mr'Jamshidy

من هم خیلی دوست دارم همکاری کنم با شما البته اگر بخواید

من خودم همچین قضیه ای رو به تنهایی دنبال میکردم البته هنوز کاری انجام ندادم ولی داشتم دنبال عاقلانه ترین راه ممکن میگشتم که خوشبختانه شما رو پیدا کردم
دلیل تنها کار کردنم هم همین ترول های سایت بودن، بگذریم!

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

1. استفاده از Syntax وی بی
     -  چون شناخته شده هست و تقریبا همه برنامه نویس ها باهاش آشنا هستن (کمتر برنامه نویسی پیدا میشه که ویبی بلد نباشه)

2. استفاده از زبان ویبی برای ساخت کامپایلر، مفسر و IDE
     -  اگر از سینتکس ویبی استفاده کنید، بعدا میتونید برنامه رو با کامپایلر خودش کامپایل کنید و چون قراره چند سکویی باشه یک مزیت خیلی خوبی میشه برای برنامه

و مورد سوم

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

توضیحات اضافه:

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

----------


## Jarvis

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

----------


## IamOverlord

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

----------


## NitroPlus

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

----------


## IamOverlord

سلام!
شروع کردم یه قسمتی از Parser رو بنویسم...
تصمیم گرفتم که Parser رو در Ruby به کمک Whittle بنویسم...
تا این جای کار:
دو تا فایل هست یکی theparser.rb که کد Parser مون هست... دیگری یه فایل با نام دلخواه (source.txt) که کدی که می خوایم تجزیه کنیم توش هست...
موقع کار با Parser مون می تونیم آدرس یه فایل رو به عنوان یه آرگومان خط فرمان به Parser بفرستیم... مثلا source.txt رو... بعد Parser تجزیه می کنه اون رو و درخت تجزیه درست می کنه و در خروجی نشون می ده... اگه آرگومانی نفرستید خودش یه کدی رو Parse می کنه که اون رو در داخل فایل theparser.rb براش مشخص کردید (آخر فایل در قسمت else دستور if...)
محتویات این دو فایل:theparser.rb



require 'whittle'
require 'pp'


#https://barnamenevis.org/member.php?72921-IamOverlord (masood.lapeh@gmail.com)


class TheParser < Whittle::Parser
    rule(:wsp => /\s+/).skip!                          #skip white spaces...
    rule("&") % :left ^ 1
    rule("+") % :left ^ 2
    rule("-") % :left ^ 2
    rule("mod" =>/mod/i) % :left ^ 3                   #it's case-insensitive...
    rule("\\") % :left ^ 4                             #the \ operator for integer division...
    rule("*") % :left ^ 5
    rule("/") % :left ^ 5
    rule("^") % :right ^ 6
    
    rule("(")
    rule(")")
    
    rule("=")
    
    rule("call" =>/call/i)
    rule(",")
    
    rule(:int => /[0-9]+/).as { |num| num }
    rule(:string => /"[^"]*"/ ).as { |str| str }       #that's a vb string but this one is a c string: /"([^"\\]|\\.)*"/
    rule(:identifier => /[_a-zA-Z][_a-zA-Z0-9]*/ ).as {|identifier| identifier}
    
    
    
    rule(:expr) do |r|
        r[:identifier,"(",:args,")"].as { |id,_,args,_| {:item=>"FunctionExpression",:args=>args} }
        
        r["(", :expr, ")"].as { |_, exp, _| exp}
        
        r[:expr, "&", :expr].as { |l, _, r| {:item=>"ConcatentionExpression",:left=>l,:right=>  r} }
        r[:expr, "+", :expr].as { |l, _, r| {:item=>"AdditionExpression",:left=>l,:right=>r} }
        r[:expr, "-", :expr].as { |l, _, r| {:item=>"SubtractionExpression",:left=>l,:right=>r  } }
        r[:expr,"mod",:expr].as { |l, _, r| {:item=>"ModulusExpression",:left=>l,:rigth=>r} }
        r[:expr,"\\", :expr].as { |l, _, r| {:item=>"IntegerDivisionExpression",:left=>l,:righ  t=>r} }
        r[:expr, "*", :expr].as { |l, _, r| {:item=>"MultiplicationExpression",:left=>l,:right  =>r} }
        r[:expr, "/", :expr].as { |l, _, r| {:item=>"DivisionExpression",:left=>l,:right=>r} }
        r[:expr, "^", :expr].as { |l, _, r| {:item=>"ExponentiationExpression",:left=>l,:right  =>r} }
        
        r[:int]
        r[:string]
        r[:identifier]
    end
    
    rule(:args) do |r|
        r[:expr].as {|expr| [expr]}
        r[:expr,",", :args].as { |expr,_,args| [expr]+args}
    end
    
    rule(:assignment) do |r|
        r[:identifier, "=", :expr].as { |l, _, r| {:item=>"Assignment",:left=>l,:right=>r} }
    end
    rule(:call_statement) do |r|
        r["call",:identifier, "(",:args, ")"].as { |_,id,_,args,_| {:item=>"CallStatement",:sub=>id,:args=>args}}
        r["call", :identifier].as { |_,id| {:item=>"CallStatement",:sub=>id}}
        r[:identifier, "(",:args,")"].as { |id,_,args,_| {:item=>"CallStatement",:sub=>id,:args=>args}}
        r[:identifier].as { |id| {:item=>"CallStatement",:sub=>id}}
    end
    
    
    rule(:statement) do |r|
        r[:assignment]
        r[:call_statement]
    end
    rule(:statements) do |r|
        r[:statement].as {|stmnt| [stmnt] }
        r[:statement,:statements].as {|stmnt, stmnts| [stmnt]+stmnts }
    end
    
    
    rule(:program) do |r|
        r[:statements]
    end
    
    start(:program)
end


if ARGV[0] != nil then
    print "Parsing #{ARGV[0]}...\n"
    source_code = IO.read(ARGV[0])
else
    print "File Path argument is empty!\n"
    source_code="a=b\\c"                               #the backslash character is escape character...
end


                                  
output = TheParser.new.parse(source_code)
pp output





*source.txt
*
call myadd(A,2*3,f(2,3-2),5^4,C)
a=f(x,y)+g(x^y)

در Ubuntu برای کار با اینا، می تونید Ruby رو با دستور sudo apt-get install ruby2.0 نصب کنید بعد با دستور sudo gem install whittle -V هم Whittle رو نصب کنید... بعد برید تو پوشه ای که این دو تا فایل رو ساختید و در Terminal بزنید: ruby theparser.rb source.txt

----------


## IamOverlord

سلام دوستان!

همون طور که توضیح دادم فایل theparser.rb که در Ruby نوشته شده نام فایل ورودی رو که در این جا source.txt هست رو می گیره و کدش رو تجزیه می کنه...
توی پست 214 توضیح دادم...

تا این جای کار:
فایل theparser.rb که کد تجزیه گرمون هست:
require 'whittle'
require 'pp'

#https://barnamenevis.org/member.php?72921-IamOverlord (masood.lapeh@gmail.com)

class TheParser < Whittle::Parser
    rule("(")
    rule(")")
    rule("&") % :left ^ 1
    rule("+") % :left ^ 2
    rule("-") % :left ^ 2
    rule("mod"=>/mod/i) % :left ^ 3
    rule("%") % :left ^ 3
    rule("*") % :left ^ 5
    rule("/") % :left ^ 5
    rule("\\") % :left ^ 4
    rule("^") % :left ^ 6
    rule("=")
    
    rule(",")
    rule("call"=>/call/i)
    rule("sub"=>/sub/i)
    rule("function"=>/function/i)
    rule("module"=>/module/i)
    rule("as"=>/as/i)
    rule("end"=>/end/i)
    
    rule(:identifier => /[_a-zA-Z][_a-zA-Z0-9]*/)
    rule(:unsigned_number => /[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/)
    rule(:number) do |r|
        r[:unsigned_number]
        r["+",:unsigned_number].as {|_,unsigned_number| "+" << unsigned_number}
        r["-",:unsigned_number].as {|_,unsigned_number| "-" << unsigned_number}
    end
    rule(:string => /"[^"]*"/ )
    
    rule(:expression) do |r|
        r["(",:expression,")"]
        
        r[:expression, "&", :expression].as {|left,_,right| {:item=>"concatention_expression", :left=>left, :right=>right}}
        r[:expression, "+", :expression].as {|left,_,right| {:item=>"addition_expression", :left=>left, :right=>right}}
        r[:expression, "-", :expression].as {|left,_,right| {:item=>"subtraction_expression", :left=>left, :right=>right}}
        r[:expression,"mod",:expression].as {|left,_,right| {:item=>"modulus_expression", :left=>left, :right=>right}}
        r[:expression, "%", :expression].as {|left,_,right| {:item=>"modulus_expression", :left=>left, :right=>right}}
        r[:expression, "*", :expression].as {|left,_,right| {:item=>"multiplication_expression", :left=>left, :right=>right}}
        r[:expression, "/", :expression].as {|left,_,right| {:item=>"integer_division_expression", :left=>left, :right=>right}}
        r[:expression,"\\", :expression].as {|left,_,right| {:item=>"division_expression", :left=>left, :right=>right}}
        r[:expression, "^", :expression].as {|left,_,right| {:item=>"exponential_expression", :left=>left, :right=>right}}
        
        r[:identifier,:p_arguments_p].as{|identifier,arguments| {:item=>"function_or_object_expression",:identifie  r=>identifier,:arguments=>arguments}}
        
        r[:number]
        r[:string]
    end
    
    rule(:assignment_statement) do |r|
        r[:identifier,"=",:expression,:eol].as {|left,_,right,_| {:item=>"assignment_statement",:left=>left,:right=  >right}}
    end
    
    rule(:call_statement) do |r|
        r["call", :identifier,:p_arguments_p,:eol].as { |_,identifier,arguments,_| {:item=>"call_statement",:identifier=>identifier,:  arguments=>arguments} }
        r[:identifier,:p_arguments_p,:eol].as { |identifier,arguments,_| {:item=>"call_statement",:identifier=>identifier,:  arguments=>arguments} }
    end
    
    rule(:statement) do |r|
        r[:eol].as{|_| {}}
        r[:call_statement]
        r[:assignment_statement]
    end
    
    rule(:arguments) do |r|
        r[:expression].as {|expression| [expression]}
        r[:expression,",",:arguments].as {|expression,_,arguments_| [expression]+arguments}
        r[",",:arguments].as {|_,arguments| []+arguments}
        r[].as {|| []}
    end
    
    rule(:p_arguments_p) do |r|
        r["(",:arguments,")"].as {|_,arguments,_| arguments}
        r[].as {|| []}
    end
    
    rule(:arguments_definition) do |r|
        r[:expression].as {|expression| [expression]}
        r[:expression,",",:arguments_definition].as {|expression,_,arguments_definition| [expression]+arguments_definition}
        r[",",:arguments_definition].as {|_,arguments_definition| []+arguments_definition}
        r[].as {|| []}
    end
    
    rule(:p_arguments_definition_p) do |r|
        r["(",:arguments_definition,")"].as {|_,arguments_definition,_| arguments_definition}
        r[].as {|| []}
    end
    
    rule(:sub_content) do |r|
        r[:eol,:sub_content].as {|_,sub_content| []+sub_content}
        r[:assignment_statement,:sub_content].as {|assignment_statement,sub_content| [assignment_statement]+sub_content}
        r[:call_statement,:sub_content].as {|call_statement,sub_content| [call_statement]+sub_content}
        r[].as{|| []}
    end
    
    rule(:sub_block) do |r|
        r["sub",:identifier,:p_arguments_definition_p,:eol,:  sub_content,"end","sub"].as{|_,identifier,arguments_definition,_,sub_conte  nt,_,_| {:item=>"sub_block",:identifier=>identifier,:argum  ents_definition=>arguments_definition,:sub_content  =>sub_content}}
    end
    
    rule(:function_content) do |r|
        r[:eol,:function_content].as {|_,function_content| []+function_content}
        r[:assignment_statement,:function_content].as {|assignment_statement,function_content| [assignment_statement]+function_content}
        r[:call_statement,:function_content].as {|call_statement,function_content| [call_statement]+function_content}
        r[].as{|| []}
    end
    
    rule(:function_block) do |r|
        r["function",:identifier,:p_arguments_definition_p,:  eol,:function_content,"end","function"].as{|_,identifier,arguments_definition,_,function_  content,_,_| {:item=>"function_block",:identifier=>identifier,:  arguments_definition=>arguments_definition,:functi  on_content=>function_content}}
    end
    
    rule(:class_block) do |r|
    
    end
    
    rule(:module_content) do |r|
        r[:eol,:module_content].as {|_,module_content| []+module_content}
        r[:module_block,:module_content].as {|module_block,module_content| [module_block]+module_content}
        #r[:class_block,:module_content].as {|class_block,module_content| [class_block]+module_content}
        r[:sub_block,:module_content].as {|sub_block,module_content| [sub_block]+module_content}
        r[:function_block,:module_content].as {|function_block,module_content| [function_block]+module_content}
        r[].as{|| []}
        
    end
    
    rule(:module_block) do |r|
        r["module",:identifier,:eol,:module_content,"end","m  odule",:eol].as{|_,identifier,_,module_content,_,_,_| {:item=>"module_block",:identifier=>identifier,:mo  dule_content=>module_content}}
    end
    
    rule(:program) do |r|
        r[:eol,:program].as {|_,program| []+program}
        r[:module_block,:program].as {|module_block,program| [module_block]+program}
        r[:sub_block,:program].as {|sub_block,program| [sub_block]+program}
        r[:function_block,:program].as {|function_block,program| [function_block]+program}
        r[:assignment_statement,:program].as {|assignment_statement,program| [assignment_statement]+program}
        r[:call_statement,:program].as {|call_statement,program| [call_statement]+program}
        r[].as{|| []}
    end
    
    rule(:eol=>/\n/)
    rule(:space=>/[^\S\n]*/).skip!
    
    start(:program)
end

if ARGV[0] then
    print "Parsing #{ARGV[0]}...\n"
    source_code = IO.read(ARGV[0])
else
    print "File Path argument is empty!\n"
    source_code="a=b+c"<<"\n"
end
 
output = TheParser.new.parse(source_code)
pp output


فایل source.txt که مثال هست:
module a
    module b
        sub eoe()
            x= y - -3.2
            z = x^y ^z
        end sub
        
        function func1 (arg1,arg2)
            call something56
        end function
    end module
    
    sub hellowo(b,c,ss)
        a=b
        b=c
    end sub
    
end module

sub main3(t)

    end_st=3
    end_end_end
end sub

a=b+c-x-y*z^a

function func3(x)
    call main3
    call main334(x+y)
end function

a= func3(a)



خروجی تجزیه گر برای مثال بالا:
Parsing source.txt...
[{:item=>"module_block",
  :identifier=>"a",
  :module_content=>
   [{:item=>"module_block",
     :identifier=>"b",
     :module_content=>
      [{:item=>"sub_block",
        :identifier=>"eoe",
        :arguments_definition=>[],
        :sub_content=>
         [{:item=>"assignment_statement",
           :left=>"x",
           :right=>
            {:item=>"subtraction_expression",
             :left=>
              {:item=>"function_or_object_expression",
               :identifier=>"y",
               :arguments=>[]},
             :right=>"-3.2"}},
          {:item=>"assignment_statement",
           :left=>"z",
           :right=>
            {:item=>"exponential_expression",
             :left=>
              {:item=>"exponential_expression",
               :left=>
                {:item=>"function_or_object_expression",
                 :identifier=>"x",
                 :arguments=>[]},
               :right=>
                {:item=>"function_or_object_expression",
                 :identifier=>"y",
                 :arguments=>[]}},
             :right=>
              {:item=>"function_or_object_expression",
               :identifier=>"z",
               :arguments=>[]}}}]},
       {:item=>"function_block",
        :identifier=>"func1",
        :arguments_definition=>
         [{:item=>"function_or_object_expression",
           :identifier=>"arg1",
           :arguments=>[]},
          {:item=>"function_or_object_expression",
           :identifier=>"arg2",
           :arguments=>[]}],
        :function_content=>
         [{:item=>"call_statement",
           :identifier=>"something56",
           :arguments=>[]}]}]},
    {:item=>"sub_block",
     :identifier=>"hellowo",
     :arguments_definition=>
      [{:item=>"function_or_object_expression",
        :identifier=>"b",
        :arguments=>[]},
       {:item=>"function_or_object_expression",
        :identifier=>"c",
        :arguments=>[]},
       {:item=>"function_or_object_expression",
        :identifier=>"ss",
        :arguments=>[]}],
     :sub_content=>
      [{:item=>"assignment_statement",
        :left=>"a",
        :right=>
         {:item=>"function_or_object_expression",
          :identifier=>"b",
          :arguments=>[]}},
       {:item=>"assignment_statement",
        :left=>"b",
        :right=>
         {:item=>"function_or_object_expression",
          :identifier=>"c",
          :arguments=>[]}}]}]},
 {:item=>"sub_block",
  :identifier=>"main3",
  :arguments_definition=>
   [{:item=>"function_or_object_expression",
     :identifier=>"t",
     :arguments=>[]}],
  :sub_content=>
   [{:item=>"assignment_statement", :left=>"end_st", :right=>"3"},
    {:item=>"call_statement", :identifier=>"end_end_end", :arguments=>[]}]},
 {:item=>"assignment_statement",
  :left=>"a",
  :right=>
   {:item=>"subtraction_expression",
    :left=>
     {:item=>"subtraction_expression",
      :left=>
       {:item=>"addition_expression",
        :left=>
         {:item=>"function_or_object_expression",
          :identifier=>"b",
          :arguments=>[]},
        :right=>
         {:item=>"function_or_object_expression",
          :identifier=>"c",
          :arguments=>[]}},
      :right=>
       {:item=>"function_or_object_expression",
        :identifier=>"x",
        :arguments=>[]}},
    :right=>
     {:item=>"multiplication_expression",
      :left=>
       {:item=>"function_or_object_expression",
        :identifier=>"y",
        :arguments=>[]},
      :right=>
       {:item=>"exponential_expression",
        :left=>
         {:item=>"function_or_object_expression",
          :identifier=>"z",
          :arguments=>[]},
        :right=>
         {:item=>"function_or_object_expression",
          :identifier=>"a",
          :arguments=>[]}}}}},
 {:item=>"function_block",
  :identifier=>"func3",
  :arguments_definition=>
   [{:item=>"function_or_object_expression",
     :identifier=>"x",
     :arguments=>[]}],
  :function_content=>
   [{:item=>"call_statement", :identifier=>"main3", :arguments=>[]},
    {:item=>"call_statement",
     :identifier=>"main334",
     :arguments=>
      [{:item=>"addition_expression",
        :left=>
         {:item=>"function_or_object_expression",
          :identifier=>"x",
          :arguments=>[]},
        :right=>
         {:item=>"function_or_object_expression",
          :identifier=>"y",
          :arguments=>[]}}]}]},
 {:item=>"assignment_statement",
  :left=>"a",
  :right=>
   {:item=>"function_or_object_expression",
    :identifier=>"func3",
    :arguments=>
     [{:item=>"function_or_object_expression",
       :identifier=>"a",
       :arguments=>[]}]}}]



فعلا هر برنامه تشکیل شده از یه سری module - sub - function و عبارت انتساب و عبارت call...
هر module تشکیل شده از یه سری module - sub - function...
هر sub تشکیل شده از یه سری عبارت انتساب و عبارت call...
همچنین هر function تشکیل شده از یه سری عبارت انتساب و عبارت call...

----------


## IamOverlord

سلام دوستان!
استارت پروژه زده شد!
فعلا جناب *Mr.305* همکاری می کنن...
E-Mail من:
masood.lapeh@gmail.com

----------


## as.1050

سلام عزیزان پروژتون چی شد هنوز مشغولید یا بیخیال شدید؟؟؟؟؟؟؟

----------


## Mr.305

من که بشخصه هر وقت که بشه روش کار میکنم و مشغولم

----------


## roo.row

با سلام
چرا پروژه رو ادامه نمی دهید
با تشکر

----------

