Compiler در برنامه نویسی انیمیشن و VFX . آقای سجاد ربیعی از مدرسین cmiVFX را در ادامه خواهیم داشت .بخش سوم از سری مقالات آشنایی با مفاهیم اولیه زبان های برنامه نویسی و اسکریپت نویسی را با آقای سجاد ربیعی دنبال کنید . امیدوارم دوستان نهایت استفاده را از این گنجینه ارزشمند داشته باشند .
آشنایی با مفاهیم اولیه زبان های برنامه نویسی و اسکریپت نویسی
قسمت 3 :
-
تفاوت زبان های اسکریپت نویسی و برنامه نویسی
(Programming Languages vs Scripting Languages)
-
تفاوت پلاگین و اسکریپت ابزار ها
(Plug-ins vs Scripting Tools)
-
کاربرد زبان های برنامه نویسی و اسکریپت نویسی در صنعت انیمیشن و VFX
کانال مقالات استاد سجاد ربیعی در ImanVFX
آشنایی با مفاهیم زبان های برنامه نویسی و اسکریپت نویسی در انیمیشن و VFX قسمت 1
آشنایی با مفاهیم اولیه زبان های برنامه نویسی و اسکریپت نویسی در انیمیشن و VFX قسمت 2
آشنایی با مفاهیم اولیه زبان های برنامه نویسی و اسکریپت نویسی در انیمیشن و VFX قسمت 3
آشنایی با مفاهیم اولیه زبان های برنامه نویسی و اسکریپت نویسی در انیمیشن و VFX قسمت 4
آشنایی با مفهوم Physically Based Rendering در موتورهای رندر
تفاوت زبان های اسکریپت نویسی و برنامه نویسی,قسمت 5 معرفی اسکریپت نویسی
تفاوت زبان های اسکریپت نویسی و برنامه نویسی,سجاد ربیعی قسمت 6
تفاوت زبان های اسکریپت نویسی و برنامه نویسی,سجاد ربیعی قسمت 7
تفاوت زبان های اسکریپت نویسی و برنامه نویسی,آشنایی با PyMEL – Python – API – PyQt
مروری بر مقاله قبلی
در قسمت دوم ایم مقاله در مورد دسته بندی زبان های برنامه نویسی سطح پایین ، سطح متوسط و سطح بالا صحبت کردیم و گفتم که هرچه زبان برنامه نویسی به زبان ماشین نزدیکتر باشد میگوییم سطح پایین و هر چه به زبان انسان نزدیکتر باشد میگوییم سطح بالا ، همچنین گفته شد که هر چه زبان سطح پایینتر باشد سرعت اجرای برنامه ای که با آنها نوشته شده است و استفاده از منابع سخت افزاری بسیار سریعتر و بهتر است ولی به دلیل اینکه نوشتن برنامه با این زبان ها دشوار است. در مواقعی که در برنامه ای که میخواهیم بنویسیم اگر زیاد سرعت مهم نیست یا قرار نیست محاسبات پیچیده ای انجام شود و همچنین برنامه زیاد سنگین نیست بهتره از زبان های سطح بالا مثل #C استفاده کنیم (این بدان معنا نیست که با #C نمیشه برنامه های بزرگ و سنگین نوشت)، چون برنامه نویسی با آنها بسیار راحتتر است. به همین دلیل عموما برای برنامه های حسابداری و اداری از زبان های سطح بالا و برای برنامه های 3D ، موتورهای رندر ، موتور های بازی عموما از زبان های سطح پایینتر استفاده میشود.
همچنین گفته شده زبان برنامه نویسی C و ++C یکی از پرکاربرد ترین زبان ها برای نوشتن برنامه های حجیم و بزرگ است ، به دلیل اینکه از لحاظ سرعت به زبان های سطح پایین نزدیک است و در عین حال از لحاظ برنامه نویسی به زبان های سطح بالا نزدیک است و شاید با اطمینان بتوان گفت که 99.9% بزرگترین برنامه های 3D که ما با آنها کار میکنیم با این زبان نوشته شده است.
ادامه مقاله : مترجم یا Compiler چیست ؟
خوب حالا فرض کنید ما یک برنامه رو ب زبان C نوشتیم و در انتها قراره این برنامه به زبان ماشین تبدیل بشه ، برای تبدیل هر نوع زبان برنامه نویسی به زبان ماشین ما احتیاج به یک برنامه داریم به اسم Compiler یا مترجم ، یعنی کدی که ما نوشتیم را به زبان ماشین ترجمه میکنه ،مسلما خودتون هم میتونید حدس بزنید که هر زبان برنامه نویسی نیاز به Compiler مخصوص به خودش رو داره ، برخی Compiler هایی که برای زبان C وجود دارند از این قراره : Microsoft C Compiler ، DevC++Compiler , GCC، Clang و تعداد بسیار زیادتری کامپایلر دیگر ، دربین آنها GCC و Clang معولا برای Linux و OSX (سیستم عامل مکینتاش) کاربرد داره. جالیه بدونید که نرم افزار Houdini روی سیستم لینوکس و یا مکینتاش با همین کامپایلرهای Clang و GCC ساخته شده است.
یه اشتباه رایج راجب کامپایلرها
یه چیزی که بیشتر دوستان راجب کامپایلر ها فکر میکنند این است که آنها فکر میکنند همان برنامه ای که ما توش کد مینویسیم و اجرا میکنیم را کامپایلر میگویند ، مثلا به برنامه CodeBlocks میگن کامپایلر ! بنابراین در اینجا لازمه به یه چیز دیگه آشنا بشید.
IDE
IDE به برنامه هایی گفته میشوند که ما در آنها کد برنامه نویسی رو مینویسیم و در نهایت این IDE ها کد ما را به Compiler میفرستند تا اجرا بشه ، IDE ها یکسری امکانت دیگری هم دارند ، مثلا کد های ما را از لحاظ Syntax رنگ بندی میکنند ، مثل اینکه تمام متغیر ها رنگ سبز بشوند و یا تمام توابع رنگ آبی ، بهترین مثال آن پنجره Script Editor مایا می باشد که وقتی توش یه اسکریپت مینویسی فرامین اصلی سبز رنگ و آبی رنگ میشوند ، پس شاید اینطوری بتوانیم بگوییم که برنامه های IDE در حقیقت یک محیط کاربری هستند که ما توش برناممون را تایپ میکنیم و همچنین IDE رابط بین کاربر و Compiler نیز هست.
معمولا برنامه های IDE باید این ویژپی ها را داشته باشند
1. محیط کاربری برای نوشتن کدها و دستورات(شبیه NotePad) با قابلیت رنگ دادن به دستورات و فرامین
2. امکان ارسال کد ها به برنامه کامپایلر برای اجرا و Build دستورات
3. امکان Debugger برای خطا یابی برنامه ای که نوشتیم
معروفترین برنامه های IDE عبارتند از Microsoft Visual Studio ، CodeBlocks ، NetBeans ، Eclipse ، CodeLite و غیره. پس داستان از این قرار شد که ما برای برنامه نویسی ابتدا نیاز به یک کامپایلر مثل GCC داریم و بعد نیاز به یک برنامه داریم که برناممون رو در آن بنویسیم که به آن IDE میگیم مثل CodeBlocks. در سیستم عامل ویندوز یکی از کاملترین و بهترین نرم افزارهای (IDE + Compilers) برنامه نویسی، نرم افزار Microsoft Visual Studio می باشد که توانایی کدنویسی و Compile بسیاری از زبان های برنامه نویسی نظیر ++C ، #C و Basic و غیره را دارد .
نکته
با توجه به توضیحات داده شده متوجه میشید که برای برنامه نویسی حتما نیازی به برنامه های IDE نیست و شما حتی میتونید کدتون رو تو NotePad بنویسید و به صورت دستی آن را با برنامه های Compiler اجرا کنید !
فایل ساخته شده توسط برنامه نویسی یا خروجی برنامه نوشته شده چیست ؟
خوب حالا که برنامه رو نوشتیم و آن را کامپایل کردیم چه اتفاقی میوفته ؟ اینجا باید ببینیم ما برای چه کاری برنامه نوشتیم ، آیا میخواستیم یک نرم افزار بسازیم ؟ آیا میخواستیم یک صفحه وب بسازیم ؟ آیا میخواستیم یک کتابخانه (Library) بسازیم ؟(بعدا با کتابخانه آشنا میشوید) ، همچنین باید ببینیم در چه سیستم عاملی این برنامه را نوشتیم.
اگربرای ساخت یک نرم افزار برنامه نوشته باشید ، بعد از کامپایل یک فایل اجرایی (که به آن Executable) میگویند برای شما ساخته میشود ، فرمت این فایل بسته به نوع سیستم عامل (ویندور ، لینوکس ، مکینتاش ، اندروید و … ) میتواند فرمت های مختلفی مثل exe , deb , rpm , app و غیره باشد که شما دوستان بیشتر با فرمت exe در ویندوز آشنا هستید .
منظور از فایل اجرایی چیست ؟
فایل اجرایی یا executable به فایلی گفته میشوند که برای اجرا شدن یا باز شدن در سیستم عامل نیاز به هیچ برنامه خاصی ندارد ، اجازه بدید مثالی بزنم ، مثلا فایل calc.exe یک فایل اجرایی میباشد که با اجرا کردن آن برنامه ماشین حساب ویندوز باز میشود ، یا مثل فایل maya.exe در پوشه bin در محل نصب مایا که با اجرا کردن آن برنامه مایا باز میشود.
منظور از فایل غیر اجرایی چیست ؟
حالا یه فایل به اسم JKCompny.txt را در نظر بگیرید ، همانطور که از فرمتش معلومه این یک فایل متنی میباشد ، وقتی که روی این فایل دوبار کلیک میکنید ، ابتدا برنامه notepad که خود در حقیقت یک فایل اجرایی است (notepad.exe) باز میشود و سپس فایل JKCompany.txt در داخل این برنامه notepad باز میشود ، پس اینطور میتونیم بگیم که فایل های غیر اجرایی مثل همین مثال برای باز شدن نیاز به یک برنامه اجرایی دارند .
پس میتونید حدس بزنید که فایل های JKCompany.mb و JKCompany.ma فایل های غیر اجرایی هستند ، چون برای باز شدن نیاز به نرم افزار Maya دارند یا فایل Test.max که برای باز شدن نیاز به برنامه 3DMax دارد ! مثال دیگر فایل های تصویری هستند که برای باز شدن نیاز به نرم افزار های مخصوص مثل Media Player دارند.
مقدمه کوتاه در مورد فایل های کتابخانه ای (Library)
ما با برنامه نویسی یک دسته فایل های دیگری هم میتونیم بسازیم که اجرایی نیستند ولی شبیه فایل های txt یا mb و یا تصویری و صوتی هم نیستند ، این فایل ها را معمولا با فرمت های dll و lib در ویندوز و یا so در لینوکس یا مکینتاش میبینیم ، همانطور که میدونید اگر ما روی یک فایل dll در ویندوز دوبار کلیک کنیم هیچ اتفاقی نمیوفتد ! به این فایل ها ، فایل های کتابخانه ای میگویند که در شماره بعدی کاملا توضیح میدهم. فقط الان بدونید که در این فایل ها اطلاعاتی وجود دارد که برنامه های اجرایی مختلف مثل Maya وقتی که میخواهند اجرا بشوند به این اطلاعات نیاز دارند .
در مقاله بعدی انشالا یکم بیشتر راجب کتابخانه ها صحبت میکنم و از همه مهمتر شما به صورت کامل می فهمید که DirectX و OpenGL که همه جا اسمش رو شنیدید و دیدید واقعا چی هستند !؟
با تشکر
سجاد ربیعی
6 دیدگاه
امیر اشکذری
خیلی ممنون از وقتی که گذاشتید آقای ربیعی، خیلی عالی بود.
سیامک سازگار
خیلی عالی بود
ممنون
دانیا
واقعا عالی بود ممنون از شما.
PARSA sxw
سلام
با تشکر از ایمان و سجاد عزیز
باید بگم که داریم به جاهای هیجان انگیزش میرسیم
بسیار جذاب و کاربردی
خاطراتی ازحدود 20سال پیش برام زنده شد
و نکات ریز زیادی یاد آوری
بیصبرانه منتظر قسمتهای بعد هستم
خدا قوت
پیروز باشید
هومن حسین خواه
سلام استاد
خسته نباشی
شاید یکم سوالم بیربط باشه. ولی ایا حقیقت داره که شرکت اتودسک درست و حسابی به مایا رسیدگی نمیکنه؟ و جا افتاده بین همه که اونو درست توسعه نمیده و کمپانی ها خودشون با برنامه نویس اونو ارتقا میدن.
کلا اینده مایا رو تار میبینید یا روشن؟ ایا اتودسک داره مایا رو به حاله خودش رها میکنه یا نه از وقتی اونو خریده پیشرفت کرده و داره ارتقا میده مدام؟
ایا این شایعات حقیقت داره ؟
ممنونم
سجاد ربیعی
سلام.
راستش من زیاد با این مسائل سیاسی کاری ندارم دوست من.
ولی از نظر من اتودسک به تولید مایا ادامه میده ، چون اکثر شرکت های تولید کننده VFX با این نرم افزار کار میکنند و اگر آن را دیگه تولید نکنه یک بازار خوب رو از دست میده.
از طرفی اتودسک امکاناتی هم به Maya در نسخه های جدید اضافه میکنه و اینطوری نیست که ولش کرده باشه ، مثل Bifrost که در این دو نسخه آخر اضافه و تکمیل شده و واقعا قویه.
هر چند که من شخصا به شرکت Alias که Maya را تولید میکرد ارادت ویژه تری داشتم.
در مورد شرکت های خارجی باید عرض کنم که آنها فقط برای خود یکسری پلاگین و ابزار انحصاری مینویسند و این امکاناتی که به Maya در هر نسخه اضافه میشود توسط خود شرکت اتودسک میباشد یا حداقل از زیر تایید این شرکت رد شده است.