PDA

View Full Version : پاسکال و سی



qazwsx
جمعه 25 بهمن 1387, 13:37 عصر
با سلام

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

sobhangh
جمعه 25 بهمن 1387, 18:41 عصر
بزرگترین قدرت سی اینکه محدودیت نداره و قدرت پاسکال اینکه ساده است.
پس سی ساده نیست و پاسکال هم محدوده.

vcldeveloper
جمعه 25 بهمن 1387, 20:39 عصر
از این سوال ها زیاد پرسیده شده، و بارها هم بهش جواب داده شده.


پس سی ساده نیست و پاسکال هم محدوده. کدوم پاسکال؟ منظورتون پاسکالی هست که Niklaus Wirth ساخت، یا کامپایلر پاسکالی که بعدها بورلند ارائه کرد (توربو پاسکال و نسخه های بعد از آن)؟ اگر منظور دومی هست، دومی هیچ محدودیتی نسبت به زبان C نداره.


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


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

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


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


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

مهران موسوی
جمعه 25 بهمن 1387, 22:52 عصر
اگه با یک دید کلی و تخصصی به گفته های اقای کشاورز نگاه کنیم میشه فهمید که گفته هاشون کاملا درست هست . اگه با Turbo Pascal برنامه نویسی کرده باشید و کمی روی قابلیت های این زبان مانور داده باشید طولی نمیکشه که میتونید این رو بفهمید که در این زبان برای دستیابی به منابع سیستمی و کنترل سخت افزارها و ... محدودیتی وجود نداره و تنها دلیل محبوب شدن C میتونه این باشه که به صورت یک استاندارد در اومده و برای هر محیطی یک کامپایلر داره و این باعث شده تا درد سر ها برای اجرا و کامپایل برنامه در محیط ها ی گوناگون کمتر بشه و در نتیجه میتونیم شاهد محبوبیت اون بین کاربرانش باشیم . هر چند خود من هم برای برنامه نویسی میکرو کنترولر ها از C استفاده میکنم چون میبینم که واقعا درد سر اجرای کد هام بر روی میکرو کنترولر های موجود کمتر هست و ...

vcldeveloper
جمعه 25 بهمن 1387, 23:15 عصر
البته این نکته را هم اضافه کنم که رابط برنامه نویسی کامپیوترهای مکینتاش تا مدتها پاسکال بود. محبوبیت C از زمان عرضه آزاد Unix افزایش پیدا کرد. این سیستم عامل یک سیستم عامل اوپن سورس بود که در اختیار دانشگاه ها قرار گرفته بود، و رابط برنامه نویسی آن هم با C بود، پس به تدریج دانشجویان به سمت C گرایش پیدا کردند تا بتونند برای Unix برنامه بنویسند. بعدها ویندوز هم رابط برنامه نویسی خودش را با C عرضه کرد، و باعث شد که گرایش به C افزایش پیدا بکنه.

qazwsx
یک شنبه 27 بهمن 1387, 19:48 عصر
مثلا همین ویندوز، کدهای مربوط به پنجره هایش با پاسکال نوشته شده.

.

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

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

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

مهران موسوی
یک شنبه 27 بهمن 1387, 21:48 عصر
Borland Turbo Pascal 7 رو پیشنهاد میکنم . توجه کنید که باید برنامتون رو کاملا Native بنویسید تا برای اجرا به سیستم عامل نیاز نباشه . یعنی از توابع کتابخانه ای ویندوز به هیچ عنوان استفاده نکنید .

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

یا حق ..

qazwsx
سه شنبه 29 بهمن 1387, 15:46 عصر
Borland Turbo Pascal 7 رو پیشنهاد میکنم . توجه کنید که باید برنامتون رو کاملا Native بنویسید تا برای اجرا به سیستم عامل نیاز نباشه . یعنی از توابع کتابخانه ای ویندوز به هیچ عنوان استفاده نکنید .

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

vcldeveloper
سه شنبه 29 بهمن 1387, 18:54 عصر
تا اونجای که من تحقیق کردم از وقفه های داس و محیط داس نمیشه استفاده کرد
بله، نمیشه استفاده کرد. شما هم باید از هر کدی که وابسته به قابلیت های یک سیستم عامل مثل داس یا ویندوز هست، پرهیز کنید.

بهتر هست که بحث را در تالار توسعه سیستم عامل دنبال کنید. آنجا راهنمایی های بهتری دریافت می کنید.

vcldeveloper
سه شنبه 29 بهمن 1387, 18:58 عصر
http://www.trumpet.com.au/index.php/products/classios.html
http://en.wikipedia.org/wiki/UCSD_Pascal

qazwsx
سه شنبه 29 بهمن 1387, 22:05 عصر
اولا بگم من از همه بی سواد تر هستم بعد اگه آقای کشاورز اجازه بدن چون بچه های قسمت توسعه سیستم عامل همه با سی کا میکنن و کسی زیاد با پاسکال آشنای نداره (کار نمیکنن )من اینرو در این قسمت ادامه بدم البته باز اگه اجازه نمیدین من ادامشو تو همون قسمت بدم .

vcldeveloper
چهارشنبه 30 بهمن 1387, 03:57 صبح
چون بچه های قسمت توسعه سیستم عامل همه با سی کا میکنن و کسی زیاد با پاسکال آشنای نداره (کار نمیکنن )من اینرو در این قسمت ادامه بدم البته باز اگه اجازه نمیدین من ادامشو تو همون قسمت بدم .
توسعه سیستم عامل چندان وابسته به زبان برنامه نویسی نیست. اگر اونجا مطرح کنید، از این جهت بهتره که هر کی میره در اون بخش، به این مبحث علاقه داره، یا در آن سررشته ایی داره، ولی اینجا کمتر کسی به این مبحث علاقه داره، یا باهاش آشنا هست؛ پس اونجا نتیجه بهتری خواهید گرفت.

qazwsx
چهارشنبه 30 بهمن 1387, 19:23 عصر
باشه همون قسمت ادامه میدم ممنون از راهنمایتون