# برنامه نویسی سطح پایین > توسعه‌ی هسته‌ی سیستم عامل >  بهترین زبان برنامه نویسی برای ساختن یک سیستم عامل

## unix_svr4

با سلام

درسته که من یک برنامه نویس جاوا هستم ولی علاقه زیادی هم به طراحی سیستم عامل دارم.
من می دانم که سیستم عامل های اولیه به زبان Assembly نوشته می شدند.
و همچنین می دانم نسخه اولیه Unix به زبان PL/1 نوشته شده بود.
می خواستم بدانم از نظر شما بهترین زبان برنامه نویسی برای نوشتن یک سیستم عامل چیست؟؟؟

1-Assembly
2-C
3-++C
4-Java

----------


## tritilium

به نظر من  C++‎  البته نظر مایکروسافت هم همینه چون ویندوز رو هم با اون نوشتن !

----------


## fatrix

اگر میخوای تازه شروع کنی assembly  خیلی خوبه من خودم الان مشغول همین کارم اما بعد که راه افتادی با C

----------


## ICEMAN

من هم موافقم با Assembly , C/C++‎ ,ولی منظورتون و نمی فهمم چرا Java رو نوشتید

سیستم عاملی هست که با جاوا نوشته باشن

----------


## Mehdi Asgari

> سیستم عاملی هست که با جاوا نوشته باشن


http://www.jnode.org/



> می خواستم بدانم از نظر شما بهترین زبان برنامه نویسی برای نوشتن یک سیستم عامل چیست؟؟؟


بهترینی وجود نداره ، ولی اسمبلی و سی تقریبا در تمام سیستم عامل ها به کار رفتن (سیستم عامل های managed هم داریم که با سی شارپ ایجاد شدن)

----------


## __Genius__

عموماً با C , Assembly مینویسن .

----------


## qazwsx

ببین دوست عزیز شما اول باید ببینید از سیستم عاملتون چی میخواهید 
1-سرعت
2-امنیت
3-گرافیک بالا
و......

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

----------


## MSK

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

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

----------


## miradli

دوست عزیز همون طور که دوستان گفتن سیستم عاملهای کاربردی مثل ویندوز و لینوکس و مک و ... با اسمبلی و سی نوشته شدند ، اما هدف شما مهمتر هست :
> به عنوان مثال برای برنامه ساده ای که نیاز به ارتباط با بانک اطلاعاتی داره و به منابع سیستم کاری نداره ، عاقلانه نیست با سی پلاس پلاس برنامه بنویسیم و بهتره با سی شارپ بنویسیم اگر چه با سی پلاس پلاس هم میشه ! ( بخاطر راحتی کار و سریع تر به نتیجه رسیدن پروژه )
زبان کاری خودتون که جاوا هست با همون میتونی کار کنی .
درضمن با اسمبلی به تنهایی میشه سیستم عامل نوشت اما با دیگر زبانها به تنهایی نمیشه ، یعنی اگه سی رو انتخاب کنی باید باز هم اسمبلی رو بدونی ! و همینطور دیگر زبونهایی که مطرح کردی !
 اسمبلی = سیستمی مطمعن سریع و ....
سی = سیستمی خوب + سریعتر به نتیجه رسیدن

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

----------


## behzad24be

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

----------


## hozouri

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

----------


## mehrdadmehrvarz

البطه ویندوز با سی نوشته شده و گلوگاهای حساس اون با اسمبلی نه با C++‎

----------


## jeson_park

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


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

----------


## pswin.pooya

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

----------


## alireza.zahani

رو سی شارپ حساب کن
هم به java شما نزدیکه
هم ویندوز سون روش حساب کرده

----------


## yassersajjadi

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

----------


## behnam404

Assembly , سی پلا پلاس
هر دو رو باید بدونی

----------


## mohamad.550

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

----------


## m.j_banitaba

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

----------


## mohamad.550

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



آره حق با شماست

----------


## m.j_banitaba

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

تا بی‌خبر بمیرد در درد خودپرستی

عاشق شو ار نه روزی کار جهان سر آید

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

دوش آن صنم چه خوش گفت در مجلس مغانم

با کافران چه کارت گر بت نمی‌پرستی

سلطان من خدا را زلفت شکست ما را

تا کی کند سیاهی چندین درازدستی

در گوشه سلامت مستور چون توان بود

تا نرگس تو با ما گوید رموز مستی

آن روز دیده بودم این فتنه‌ها که برخاست

کز سرکشی زمانی با ما نمی‌نشستی

عشقت به دست طوفان خواهد سپرد حافظ

چون برق از این کشاکش پنداشتی که جستی

----------


## mohamad.550

من مرده اون فهمتم.آقای با ادب.



چاکرتیم.خواهش.

----------


## alizadehsoha

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

----------


## m.j_banitaba

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

----------

