انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: ح.م در 27 آبان 1391، 10:21 بظ
-
یه سوال داشتم وقتی که هیچ رابطی نبود منظورم همون موقع است که کامپیوتر ها فقط صفر و یک می شناختند چه چوری به کامپیوتر یه رابط دستوری رو فهموندن ! اصلا زبان های برنامه نویسی رو چطور واسش تعریف کردن ! بعد یه سوال دیگه ، رابطهای دستوری چطور تونستن رابط گرافیکی درست کنن ! این واقعا چندین ساله واسم سواله ??? ؟؟؟
-
زبان برنامه نویسی صفر و یکی (زبان ماشین) قبل از برنامه های نرم افزاری به وجود اومد.
در اون زمان با استفاده از کارت های خاص مدارها رو باز و بسته می کردند و دستورات رو به پردازنده می فهموندند.
بعدها با توسعه الکتونیک این کارت ها از بین رفتند و جاشون به مرور زمان با زبان ماشین (نرم افزاری) گرفته شد.
این زبان به مرور زمان زبان های برنامه نویسی دیگر را از دل خود به وجود آورد.
یکم توضیحش سخته و برای درکش باید با مفاهیم کلی کامپیوتر آشنایی داشته باشید. مثل عملکرد بیت ها، عملکرد پردازنده و...
-
زبان برنامه نویسی صفر و یکی (زبان ماشین) قبل از برنامه های نرم افزاری به وجود اومد.
در اون زمان با استفاده از کارت های خاص مدارها رو باز و بسته می کردند و دستورات رو به پردازنده می فهموندند.
بعدها با توسعه الکتونیک این کارت ها از بین رفتند و جاشون به مرور زمان با زبان ماشین (نرم افزاری) گرفته شد.
این زبان به مرور زمان زبان های برنامه نویسی دیگر را از دل خود به وجود آورد.
یکم توضیحش سخته و برای درکش باید با مفاهیم کلی کامپیوتر آشنایی داشته باشید. مثل عملکرد بیت ها، عملکرد پردازنده و...
وایسا یه کم یواش تر ! همین کارت رو یه کم توضیح بده بی زحمت ! بعد یه کم در مورد توسعه الکترونیک توضیح بده دقیقا چطور از رابط صفر و یکی به رابط دستوری رفتن با کارت ها دستوراتی بهش دادن ! اصلا حروف رو چطوری واسش تعریف کردن !
-
شاید یه سری دستگاه های موسیقی رو دیده باشین[البته تو فیلما]که یه میله ای حاوی برجستگی ها و فرو رفتگی هایی روش هستن که بعد از گذاشتن تو دستگاه یه موسیقی خاص رو پخش میکنن-برایی تغییر موسیقی باید میله رو عوض کرد-کامپیوتر های ابتدایی هم از ساختاری شبیه این پیروی میکردن:]]
-
اگه ججوابش رو کامل میخوای باید کتاب سیستمعامل دکتر حقیقت رو بخونی.
اولین بار صفر و یکها رو روی کارت سوراخ میکردن و به کارتخون سیستم میدادن تا بخونه (سیستم ترتیبی). بعداً با ظهور ترانزیستورها اونها رو روی نوار (مثل همین نوار کاستهای خودمون) مینوشتن. بعد با پیدایش اسمبلر دیگه بهجای صفر و یک کدهای اسمبلی رو روی نوارها مینوشتن و اسمبلر اونها رو برای ماشین به صفر و یک تبدیل میکرد (سیستم دستهای). بعد برای ورودی و خرجی هم یه دستکاه نوارخون و نوارنویس به سیستم اضافه کردن (offline spooling). بعد دیسکها به وجود اومدن و تکنولوژی بافر هم به میون اومد و باعث شد سیستمهای online spooling به وجود بیان. بعد ICها اومدن و IBM نحستین رایانه به شکل امروزی (تقریباً) رو ارائه کرد.
در ضمن در ادامهی بحثی هم که در یکی از تاپیکها به وجود اومده بود، نخستین برنامهنویس دنیا یه خانوم بود به اسم ایدا لاولیس (http://en.wikipedia.org/wiki/Ada_Lovelace) که برای همون کارتخونهای صفر و یکی برنامه مینوشت
-
عجب کار خوبی کردی این سوال رو پرسیدی! این سوال خیلی وقته که تو ذهن منم هست! جوابها رو خوندم ولی هیچکدوم رو نفهمیدم :'( فکر کنم آخر سر همون کتابی رو که دانیال گفت باید بخونم تا شاید بفهمم که چی به چیه قضیه.
-
این دستگاه هایی رو دیدی که باهاش کاغذ پانچ میکنن و بعد کاغذرو میذادن توی کلاسور؟
فرض کن یه کاغذ داری که مثلا ۸ تا جای پانچ داره. یه سریهاش پانچ شده یعنی سوراخه. یه سریهاش هم بسته است. این رو قرار میدادن توی یه دستگاهی (که قدیم به عنوان ورودی کامپیوتر بوده مثل موس که الان هست یا کیبورد) بعد جاهایی که سوراخ بوده یعنی صفر و جاهایی که بسته است یعنی ۱
خب این شد یه بایت ;D
و این داستان ادامه دارد ... ;D
و به این ترتیب یه برنامه رو مینوشتن یا داده ها رو از ورودی میگرفتن و...
-
بابا اينا چه اعصابي داشتن ها !
ولي هنوز نفهميدم ما از يه رابط صفر و يکي به هر شکلش (چه کاغذي و چه مثلا با دستگاهي صفر و يک رو وارد کنيم) به يه رابط رسيديم که حروف توش بود و اين حروف واسش معنا دار بود
بعد از اين دستور ها چه طور به يه رابط رسيدم که مثلا منو داشت چه جوري مي شه با دستور يه رابط گرافيکي ساخت واقعا عجيب به نظر مي ياد.
-
این دستگاه هایی رو دیدی که باهاش کاغذ پانچ میکنن و بعد کاغذرو میذادن توی کلاسور؟
فرض کن یه کاغذ داری که مثلا ۸ تا جای پانچ داره. یه سریهاش پانچ شده یعنی سوراخه. یه سریهاش هم بسته است. این رو قرار میدادن توی یه دستگاهی (که قدیم به عنوان ورودی کامپیوتر بوده مثل موس که الان هست یا کیبورد) بعد جاهایی که سوراخ بوده یعنی صفر و جاهایی که بسته است یعنی ۱
خب این شد یه بایت ;D
و این داستان ادامه دارد ... ;D
و به این ترتیب یه برنامه رو مینوشتن یا داده ها رو از ورودی میگرفتن و...
دقیقا. اگر از کسایی که قبل از انقلاب دانشگاه رفتن بپرسین کاملا درک میکنن که چی میگین :)
چون اون موقع حداقل تو دانشگاه شیراز (پهلوی سابق) این جوری بوده.
-
ولي هنوز نفهميدم ما از يه رابط صفر و يکي به هر شکلش (چه کاغذي و چه مثلا با دستگاهي صفر و يک رو وارد کنيم) به يه رابط رسيديم که حروف توش بود و اين حروف واسش معنا دار بود
کدهای اسکی (http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters) رو دیدی؟ این ترجمهی صفر و یکها به زبون آدمیزاده. یعنی هروقت تو بخوای بنویسی A رایانه میخونه 1000001. هنوز هم حروف برای رایانه معنادار نیستن و کارها با نگاشت اونها و دادنشون به رایانه انجام میشه.
بعد از اين دستور ها چه طور به يه رابط رسيدم که مثلا منو داشت چه جوري مي شه با دستور يه رابط گرافيکي ساخت واقعا عجيب به نظر مي ياد.
یه سری کتابخونهها هستن مثل OpenGL که برات روی صفحهی نمایشگر یه شکلی رو میکشن. با اونها رابطهای گرافیکی نوشته میشن. برای آشنایی بیشتر باید کتابهای گرافیک کامپیوتری رو نگاه کنی
-
می دونم شما چی می گی من سوالم اینه کا اول که خواستن یه زبان واسه کامپیوتر تعریف کنن (مثلا C) اون موقعی که کامپیوتر ها فقط صفر و یک حالیشون بود (الان هم همینجوریه) و زبانی براشون تعریف نشده بود چطور مثلا یه زبان رو بهش حالی کردن با صفر و یک دیگه چه جوری !
-
می دونم شما چی می گی من سوالم اینه کا اول که خواستن یه زبان واسه کامپیوتر تعریف کنن (مثلا C) اون موقعی که کامپیوتر ها فقط صفر و یک حالیشون بود (الان هم همینجوریه) و زبانی براشون تعریف نشده بود چطور مثلا یه زبان رو بهش حالی کردن با صفر و یک دیگه چه جوری !
عزیز دلم سی که اولین زبان برنامهنویسی نبوده :)
زبون فورترن سال ۱۹۵۷ بوجود اومده و زبان سی ۱۹۷۲! یعنی ۱۵ سال بعدش :)
-
ببین C خیلی پیشرفتهست. اسمبلی رو در نظر بگیر. مثلاً تو اسمبلی مینویسی
ADD EAX EBX
اسمبلر تبدیلش میکنه به یه کد دودویی مثلاً10010101 11100101 01011010
بایت نخست این دستور (10010101) که توسّط پردازنده خونده میشه (Fetch) میفهمه که باید دو تا عملگر بعدی رو بذاره تو مدار جمع کنندهی واحد محاسبه و منطق (decode). بعد جوابش رو برگردونه و بذاره تو عملگر نخست (execute). حالا فکر کن یه سری برنامههایی نوشتن که دستورات زبونهای سطح بالا رو میخونه و تبدیلش میکنه به اسمبلی که به این صورت اجرا بشه
-
با ظهور ویندوز زبان های برنامه نویسی visual اومدن که با استفاده از توابع و کتابخانه ها و api ویندوز میومدن رابط گرافیکی کاربر رو طراحی میکنن...یکی از مهمترین این کتابخانه ها توی ویندوز win32 هست....هر چی میخوای توی اینه
-
نمی دونم شاید من دارم بد سوال می پرسم
سوال من اینه که چه جوری به کامپیوتری که فقط صفر و یک می فهمه یاد دادن که مثلا زبان اسمبی رو بفهمه متوجه شدید سوالم رو !
-
از طریق مدارهای منطقی.
زبون ماشین توسط مدارهای منطقی اجرا میشه.
مثلا مدار جمع دو تا بایت که دوتا بایت رو ورودی میگیره و جمعش رو خروجی میده.
اینا از اجزای CPU محسوب میشن. مدارهای فیزیکی و سخت افزاری هستن.
-
خب این پرسشها یه دورهی ۱۰ ترمهی مهندسی کامپیوتره. پردازنده یه موجودیه که به ترتیب و به تناوب این سه تا کار رو پشت سر هم انجام میده: واکشی، رمزگشایی، اجرا. واکشی، رمزگشایی، اجرا. واکشی، رمزگشایی، اجرا. واکشی، رمزگشایی، اجرا …
وقتی یه بایت واکشی میکنه که ترجمهی دستور ADD باشه، با رمزگشایی میفهمه که عمل جمع باید انجام بشه، پس عددهای بعدی رو میفرسته به واحد محاسبه و منطق که با هم جمع بشن. اونجا هم یه سری مدار و گیت منطقی به صورت سختافزاری وجود داره که یکی از این مدارها مدار جمع کنندهاست با دوتا ورودی. عددهایی که خونده می شن روی دو تا وردی این مدار قرار میگیرن و نتیجهاش که به دست اومد پردازنده اون رو در مکان مشخّص شده قرار میده که به این قسمت میگن اجرا
-
الان که دارم فکر می کنم می گم شاید بهتر می بود می یومدم رشته کامپیوتر ! علاقه ام هم بد نبود
-
الان که دارم فکر می کنم می گم شاید بهتر می بود می یومدم رشته کامپیوتر ! علاقه ام هم بد نبود
عزیزم لزومی نداره که حتما تحصیلات آکادمیک تو زمینهی کامپیوتر داشته باشی. میتونی تو رشتهی خودت موفق باشی البته دانش زیادی هم تو زمینهی کامپیوتر داشته باشی. به قول آقای وولفرم (صاحب شرکت تولید کنندهی متمتیکا و وولفرمآلفا و ...) دنیای آینده دنیای computational (محاسباتی) هست.