• چه زبان های برنامه نویسی برای چه چیزی مورد نیاز است؟ زبان برنامه نویسی و انواع آن

    2) صفحه 2 زبان برنامه نویسی چیست

    3) چه زبان های برنامه نویسی برای صفحه 3 هستند

    4) چه زبان های برنامه نویسی وجود دارد ص 4 تا 7

    5) کامپایلر و مفسر صفحه 8 چیست

    6) مراجع صفحه 9

    معرفی

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

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

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

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

    در این شرایط - زمانی که قدرت ارزان و در دسترس شد - سازندگان زبان های برنامه نویسی شروع به فکر کردن بیشتر و بیشتر کردند. راحتی نوشتنبرنامه ها و نه فقط سرعت اجرای آنها. عملیات «کوچک» (اتمی) که مستقیماً توسط دستگاه‌های ماشینی انجام می‌شد، در عملیات‌های بزرگ‌تر، سطح بالاتر و ساختارهای کامل ترکیب شدند که کار کردن با آن‌ها برای شخص بسیار آسان‌تر و راحت‌تر است.

    زبان برنامه نویسی چیست؟

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

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

    سازندگان زبان ها این مفهوم را متفاوت تفسیر می کنند. زبان برنامه نویسی. در میان جوامع مکان‌هایی که توسط اکثر توسعه‌دهندگان به رسمیت شناخته شده‌اند، موارد زیر وجود دارد:

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

    زبان های برنامه نویسی برای چیست؟

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

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

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

    زبان های سطح پایین شامل زبان های اسمبلی هستند (از انگلیسی toassemble - to assemble, assemble). زبان اسمبلی از نمادهایی برای دستورالعمل هایی استفاده می کند که به راحتی قابل درک و به خاطر سپردن هستند. به جای دنباله ای از کدهای دستوری باینری، عناوین نمادین آنها نوشته می شود و به جای آدرس های باینری داده های مورد استفاده در هنگام اجرای دستور، نام های نمادین این داده ها که توسط برنامه نویس انتخاب شده است، نوشته می شود. زبان اسمبلی گاهی اوقات به عنوان mnemocode یا autocode شناخته می شود.

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

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

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

    زبان های برنامه نویسی چیست؟

    فرترن

    زبان های برنامه نویسی از اواسط دهه 1950 ظاهر شدند. یکی از اولین زبان های این نوع، زبان فرترن (انگلیسی FORTRAN از FORmulaTRANslator - مترجم فرمول) بود که در سال 1957 توسعه یافت. فرترن برای توصیف الگوریتم حل مسائل علمی و فنی با استفاده از رایانه دیجیتال استفاده می شود. درست مانند اولین کامپیوترها، این زبان عمدتاً برای انجام محاسبات علوم طبیعی و ریاضی در نظر گرفته شده بود. این زبان به شکلی بهبود یافته تا زمان ما باقی مانده است. در میان زبان های سطح بالا مدرن، یکی از پرکاربردترین زبان ها در تحقیقات علمی است. رایج ترین انواع Fortran-II، Fortran-IV، EASICFortran و تعمیم آنها هستند.

    ALGOL

    پس از فرترن، در سال 1958-1960، زبان الگول (Algol-58, Algol-60) ظاهر شد (انگلیسی ALGOL از ALGOrithmicLanguage - زبان الگوریتمی). که شامل دانشمندان اروپایی و آمریکایی می شد. این زبان به زبان های سطح بالا تعلق دارد و به شما امکان می دهد فرمول های جبری را به راحتی به دستورات برنامه ترجمه کنید. Algol در اروپا، از جمله اتحاد جماهیر شوروی، محبوب بود، در حالی که Fortran مشابه در ایالات متحده آمریکا و کانادا رایج بود. الگول تأثیر قابل توجهی بر تمام زبان های برنامه نویسی توسعه یافته بعدی و به ویژه بر زبان پاسکال داشت. این زبان نیز مانند فرترن برای حل مسائل علمی و فنی در نظر گرفته شده بود. علاوه بر این، این زبان به عنوان وسیله ای برای آموزش اصول برنامه نویسی - هنر برنامه نویسی - مورد استفاده قرار گرفت.

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

    cobol

    در سال 1959 - 1960، زبان COBOL توسعه یافت (eng. COBOL از COmmom Business Oriented Language - یک زبان رایج تجاری گرا). این یک زبان برنامه نویسی نسل سوم است که عمدتاً برای توسعه برنامه های کاربردی تجاری طراحی شده است. Cobol همچنین برای حل مشکلات اقتصادی، پردازش داده ها برای بانک ها، شرکت های بیمه و سایر موسسات از این نوع در نظر گرفته شده است. گریس هاپر توسعه دهنده اولین استاندارد یکپارچه Cobol بود ( مادر بزرگ کوبولا).

    Cobol معمولاً به خاطر پرحرفی و بی‌حرکتی بودن مورد انتقاد قرار می‌گیرد، زیرا یکی از اهداف سازندگان این زبان این بود که ساختارها را تا حد امکان به انگلیسی نزدیک کنند. (تا به امروز، Cobol به عنوان زبان برنامه نویسی با بیشترین خطوط کد نوشته شده در آن شناخته می شود.) در همان زمان، Cobol دارای امکانات عالی برای کار با ساختارهای داده و فایل‌های زمان خود بود که به آن عمر طولانی در برنامه‌های تجاری، حداقل در ایالات متحده داد.

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

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

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

    زالینا 13 ژانویه 2016 در 03:42 ب.ظ

    زبان های برنامه نویسی مختلف و حوزه های کاربردی آنها. سخنرانی در Yandex

    • وبلاگ شرکت Yandex،
    • توسعه وب سایت،
    • برنامه نويسي،
    • برنامه نویسی صنعتی

    ما تصمیم گرفتیم اولین پست امسال خود را به یک موضوع بسیار اساسی اختصاص دهیم، یک سخنرانی در مورد آن در Small ShAD ارائه شد. دانش آموزان دبیرستانی که به فناوری علاقه مند هستند در آن شرکت می کنند، از این رو ویژگی ارائه - این سخنرانی به ویژه برای کسانی که تازه شروع به برنامه ریزی کرده اند و به این فکر می کنند که کدام جهت را توسعه دهند جالب خواهد بود. برای آنها، Yandex یک دوره آموزشی "مقدمه ای بر برنامه نویسی (C++) دارد، که می تواند در پلت فرم Stepic.org برگزار شود.

    مدرس میخائیل گوستوکاشین - متصدی برنامه های دانشگاهی در Yandex، مدیر مرکز المپیادهای دانشجویی دانشکده علوم کامپیوتر HSE. میخائیل ده ها برنده و برنده جوایز المپیادهای برنامه نویسی همه روسیه را آماده کرد.

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

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

    تاریخچه زبان های برنامه نویسی

    بیایید از همان ابتدا شروع کنیم. در ابتدا کامپیوترها حتی صفحه کلید نداشتند! یعنی همه چیز خیلی بد بود - آنها نه صفحه کلید داشتند و نه صفحه نمایش، آنها کارتهای پانچ داشتند (اینها چیزهای کوچکی هستند که سوراخ دارند یا بدون سوراخ). بر این اساس، یا پین ها به آنجا رانده می شدند، یا در آنجا با نور می درخشیدند. اگر سوراخی وجود داشته باشد (یا برعکس نباشد) - به معنای صفر یا یک است. و برنامه ها در آن زمان با استفاده از کدهای ماشین نوشته می شدند - هر عملیات در رایانه (جمع، تفریق، برخی عملیات پیچیده تر) نوعی کد ماشین داشت. مردم خودشان این کد را از روی بشقاب انتخاب کردند، انواع آدرس‌ها را در حافظه، همه آن را با دستانشان حذف کردند و به خواننده فرو کردند - و همه اینها در نظر گرفته شد. البته، احتمالاً در آن زمان کار یک برنامه نویس چندان جالب نبود - ایجاد حفره - و البته با پیشرفت علم و فناوری، آنها شروع به ارائه انواع چیزهای "جالب" بیشتری کردند. به عنوان مثال اسمبلر (Assembler) که قبلاً زندگی را کمی آسان کرده است.

    خوب، او چگونه زندگی را آسان کرد؟ به جای اینکه به خاطر بسپاریم که نوعی کد "جادویی" برای دستور وجود دارد، از همه انواع کلمات مشابه انگلیسی "human" استفاده شد - برخی add یا mov - خوب، و سپس ثبات ها یا مناطق حافظه لیست شدند، متغیرهایی که با آنها انجام عملیات اما واضح است که این، به طور کلی، به تلاش ذهنی کافی نیز نیاز داشت تا در نظر داشته باشیم که در کدام ثبت چه دروغ هایی داریم، متغیرها کجا هستند و به طور کلی چه اتفاقی می افتد. چرا این اتفاق افتاد؟ زیرا کامپیوترها "احمقانه" بودند و نمی توانستند چیزی "هوشمندتر" را درک کنند. در واقع، مونتاژ کد ماشین از اسمبلر نیز به زمان و حافظه نیاز دارد (البته در آن زمان به اندازه کافی نبود).

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

    زبان های قدیمی و مرده

    یکی از اولین زبان ها فرترن بود. به هر حال، روی کارت های پانچ نیز شکسته شد - کارت های پانچ مخصوصی برای حذف برنامه های فرترن وجود داشت. اما اگر اکنون این Fortran را بگیرید - به نظر من، حتی بین 50-60 سال است. ظاهر شد - و سعی کنید چیزی روی آن بنویسید، برای شما بسیار ناخوشایند خواهد بود، من به شما تضمین می کنم! فرترن مدرن هنوز زنده است، اما در حال حاضر کاملاً با آنچه قبلا بود متفاوت است.

    زبان های دیگر - اکنون من یک چیز را می نویسم، که احتمالاً در مورد آن شنیده اید، اما فقط در همه رویدادهایی که در مورد تاریخ برنامه نویسی صحبت می کنند - این COBOL است. این زبان برای نوشتن برنامه های تجاری بود. برنامه های کاربردی تجاری چیست؟ بعضی تراکنش ها در بانک ها، یک چیز دیگر، همه این ها در کوبول نوشته شده بود. البته ما خیلی محبوب نیستیم. فکر می کنم به سختی یک برنامه نویس Cobol را در مسکو پیدا کنید. و در جایی نه در مسکو - با دشواری حتی بیشتر. اما در کمال تعجب، حتی 10 سال پیش، بیش از نیمی از کدهای نوشته شده توسط بشر در Cobol نوشته شده بود. و تاکنون بخش قابل توجهی از تمام تراکنش های بانکی به کمک برنامه های نوشته شده روی آن (COBOL) انجام می شود و مردم همچنان چیزی روی آن می نویسند.

    همچنین یک زبان "خنده دار" وجود دارد که Algol نام داشت (نسخه 68 که سال ایجاد آن را مشخص می کند). این یک زبان الگوریتمی است. به طور کلی، آنها یک چیزی را در آنجا می دانستند، اما اکنون ما خیلی علاقه ای نداریم که آنها چه کاری انجام دهند. و در این مورد، گشت و گذار ما به زبان های باستانی و نسبتاً بی استفاده می تواند تکمیل شود و می توانیم به آنچه هنوز زنده است (و به طور فعال زندگی می کند) حرکت کنیم.

    زبان های قدیمی اما زنده

    Algol در اروپا اختراع شد و Fortran عمدتاً در ایالات متحده استفاده شد - تفاوت زیادی وجود ندارد. چه روندی قابل توجه است؟ در ابتدا همه چیز سخت بود و برای نوشتن باید تقریباً یک مهندس بود، یک مهندس برق، تا بفهمید کدام مخاطبین بسته شده اند و چیز دیگری برای برنامه نویسی. بعد هم باید با برگ ها نشست و خاطره شمرد و مراقبش بود. و به تدریج همه چیز برای برنامه نویس ساده تر، ساده تر، ساده تر و حتی آسان تر شد - تا آنجا که ممکن است برای یک فرد کمتر فکر کند، تا آنجا که ممکن است به طور خودکار انجام دهد. در اواخر این دوره (استاد به الگول و کوبول اشاره می کند)، زبان هایی ظاهر می شوند که به تعبیری تا به امروز «بقا» کرده اند.

    پایه ای. شاید برخی از مردم هنوز چیزی روی آن بنویسند، حداقل من دیدم که در برخی موسسات آنها در QBasic تدریس می کنند - چنین پنجره آبی که در آن "1989" نوشته شده است. در کل زندگی های "با قدرت و اصلی"! این به عنوان یک زبان برای غیر برنامه نویسان تصور شد. در آن زمان برنامه نویسی یک حرفه بسیار تخصصی بود. و در اینجا آنها به شما می گویند: "در اینجا ما یک زبان بیسیک جالب داریم و هر فرد منطقی برنامه ای را در آن می گیرد و می نویسد - آسان است." باز هم، بیسیک و بیسیک مدرن تفاوت بزرگی دارند. همه این خطوط تا 10 شماره گذاری شده اند، انواع GOTO ها و وحشت های دیگر - آنها دیگر هیچ ربطی به بیسیک مدرن ندارند، و حتی ارتباط کمی با بیسیک سال 89 دارند.

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

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

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

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

    بر این اساس، این زبان اصلی در یونیکس بود، سیستم عاملی که در آن زمان حتی محبوب‌تر از اکنون بود. و در حدود دهه 80، وضعیت چیزی شبیه به این بود (استاد به زبان های Basic، C و سایر زبان های ذکر شده نشان می دهد). بیایید فرض کنیم که همه اینها به آرامی با ما مرده است (استاد سخنران نام اسمبلر، فرترن و الگول را پاک می کند) ... و در دهه 80، رایانه ها کوچکتر، هوشمندتر، ارزان تر شدند و مردم برای این کار همه چیزهای عجیب و غریب را می خواستند. حتی بهتر زندگی کنید، تا لذت بیشتری زندگی کنید.

    زبان های دهه 80

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

    C++ در ابتدا به عنوان مجموعه ای از برنامه های افزودنی برای زبان C ایجاد شد که توسعه را آسان تر می کند. در آن زمان برنامه نویسی شی گرا مد شد و مردم به این نتیجه رسیدند که همه چیز را می توان به صورت سلسله مراتبی توصیف کرد، یعنی شما یک توپ (انتزاعی) دارید، از آن یک توپ فوتبال، یک توپ والیبال، یک توپ انتزاعی دیگر به ارث می برید. بعد مد شد که "ما الان همه چیز را به شکل سلسله مراتبی می نویسیم و همه چیز خوب می شود ، زندگی بهتر می شود ، همه چیز خوب می شود و بس." C++ به یک معنا این رویکرد شی را پیاده سازی کرد - این اولین زبان برنامه نویسی شی گرا نبود، اما بسیار محبوب شد و انواع ویژگی ها در آن ظاهر شدند. در همان زمان، C ++ سازگاری تقریباً کامل (در آن زمان) با زبان C را حفظ کرد، برنامه ای که به زبان C نوشته شده بود در 99٪ موارد با موفقیت به عنوان C ++ کامپایل شد و حتی به همان روش کار می کرد. هدف از این کار انتقال آسان از C به C++ بود.

    علاوه بر رویکرد شی (در C++)، کتابخانه قالب استاندارد (STL) نسبتاً سریع ظاهر شد. من فکر می کنم که در مدرسه، کسانی که هنوز پاسکال را مطالعه می کردند متوجه شدند که شما اولاً هیچ مرتب سازی داخلی ندارید (در باستانی آبی بورلند پاسکال، اکنون در نسخه های مدرن موجود است) - یک نمونه (منبع) مرتب سازی وجود دارد. ، می توان آن را کپی و پیست کرد. اما اگر می‌خواهید اعداد صحیح را اینجا مرتب کنید، اعداد واقعی را در اینجا می‌خواهید، و در اینجا رشته‌هایی را می‌خواهید که با یکدیگر مقایسه شوند، باید سه مرتبه مختلف بنویسید که دقیقاً یک کار را انجام می‌دهند، فقط انواع داده‌های متفاوتی دارند. این خیلی خوب نیست و قالب هایی که بلافاصله در C ++ ظاهر نشدند، این مشکل را تا حد زیادی تسهیل کردند. یعنی شما یک برنامه انتزاعی داشتید که با موفقیت چیزی را مرتب کرد که قابل مقایسه با یکدیگر بود.

    زبان های اسکریپت از دهه 90

    اما زمان متوقف نشد، در دهه 80 اتفاقات جالب زیادی افتاد. اما در اواخر دهه 80 و 90، کامپیوترها آنقدر خوب شدند که انجام کارهای بسیار عجیب و بسیار ناکارآمد از قبل امکان پذیر بود. به طور خاص، اینها زبان های برنامه نویسی بودند که در کد ماشین کامپایل نشدند، بلکه تفسیر شدند. BASIC نیز زمانی تفسیر شد، اما این زبان های برنامه نویسی عمدتاً برای پردازش کلمه در نظر گرفته شده بودند - به عنوان مثال، Perl، Python (در آن زمان خیلی معروف نبود)، PHP، Ruby - اینها زبان های برنامه نویسی هستند. که در یک یا تا حدودی، آنها هنوز زندگی می کنند (همه آنها موفق شدند قبل از سال 2000 ظاهر شوند، حتی خیلی زودتر).

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

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

    در همان زمان، در اواسط دهه 90، اینترنت ظاهر شد. در ابتدا ایمیل بود، سایت هایی با HTML ثابت، اما مردم می خواستند نوعی پویایی را در آنجا اضافه کنند، تا همه چیز به صورت پویا اتفاق بیفتد، برخی از فرم ها پر شوند، کتاب مهمان انجام شود، چیز دیگری. بر این اساس، این نیاز به نوعی تعامل داشت، آنها پروتکلی برای نحوه تعامل آن ارائه کردند، و از همه مهمتر، تولید این صفحات ثابت (شرطی) که در پاسخ به درخواست کاربر برای کاربر «تفک می‌شوند».

    به طور کلی، هیچ چیز جز مروارید در آن زمان مناسب نبود. نوشتن با C خالص یا C++ handler ایده بدی بود. و به دلیل نبود زبان بهتر در آن زمان (و به اندازه کافی طولانی)، Pearl زبان اصلی برای توسعه وب بود. البته نمی توان مقیاس را با آنچه اکنون در حال وقوع است مقایسه کرد.

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

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

    پایتون و روبی: روبی در حال حاضر کمتر محبوب است، پایتون به نوعی بهتر است، اجازه دهید بعداً در مورد آن صحبت کنیم. واضح است که در آن روزها اینها (استاد به Perl، Python، Ruby، PHP اشاره می کند) زبان های بسیار تخصصی برای اهداف بسیار تخصصی بودند. در حالت کلی، هیچکس آن زمان هیچ برنامه نویسی سیستمی، هیچ منطق تجاری روی آنها ننوشت و الان خیلی این کار را انجام نمی دهند.

    زبان های گردآوری شده از دهه 90

    تقریباً در همان زمان‌ها، اما در جهتی متفاوت خواهیم رفت. در آن زمان، C++ در کشور ما تقریباً برای همه چیزهایی که لازم بود نوشته شود نه برای وب، نه برای پردازش متن، بلکه فقط برای برنامه ها، برای سیستم عامل ها، برای اسباب بازی ها - به طور کلی، برای هر چیزی استفاده می شد. اما C++ واقعاً یک زبان ترسناک است. چرا؟ زیرا اولاً به دلیل سازگاری با عقب، تمام مشکلات C را به ارث برده است. در آنجا هنوز هم می‌توانید خود را به میلیون‌ها روش مختلف بکشید، همان مواردی که در C بودند (طبیعتاً راه‌های جدیدی در C ++ اضافه شد). در عین حال، اگر همه چیز را خوب و درست بنویسید، همانطور که نویسندگان C ++ در نظر گرفته بودند، پس، البته، از قبل غیرممکن بود که خود را به روش های قدیمی C-ish بکشید، و به نظر می رسد در آنجا وجود دارد. تعداد آنها کمتر بود. با این حال، مدل شی بسیار عجیبی برای خود داشت. تقسیم برنامه به ماژول ها، به قطعات، به نحوی از C آمده است (اگر می دانید چگونه بنویسید شامل C یا C ++ - در واقع، این تصور می شود که فقط متن کتابخانه را در برنامه خود وارد کنید، در نتیجه، وقتی یک دسته از شامل می نویسید، همه چیز دارید - اگر "ابتدایی" باشد، همانطور که در همان ابتدا بود - همه چیز در یک فایل درج می شود و سپس کامپایل کردن همه چیز خیلی طول می کشد، زیرا چندین بار می رود. همان پاسکال، ویرتوفسکی، در این زمینه بسیار متفکرتر بود، نسخه های بعدی حتی بهتر هستند.

    به طور کلی C++ دارای کاستی های زیادی است. مدارک یک برنامه نویس برای نوشتن به زبان C ++ باید بالا می بود و اینگونه برنامه نویسان گران بودند (هم آموزش و هم چیزهای دیگر، یعنی پیدا کردن برنامه نویس در بازار دشوار است، آنها باید هزینه زیادی بپردازند. خوب ، به طور کلی ، این یک چیز نیست ...). و رایانه‌های ما سریع‌تر و سریع‌تر در حال شمارش هستند، ارزان‌تر می‌شوند، مردم برای خودشان رایانه‌های جدیدی می‌خرند و برنامه‌های بیشتر، اسباب‌بازی‌های بیشتری برای تلفن‌هایشان می‌خواهند، به طور کلی لذت بیشتری می‌برند.

    جاوا اینگونه متولد شد. همچنین یک داستان نسبتا خنده دار در مورد چگونگی نامگذاری این زبان وجود دارد. برنامه نویس ها هستند، آنها همیشه قهوه می نوشند و در آن زمان نوشیدن قهوه مد شده بود که در جزیره جاوا رشد می کرد. این زبان به عنوان زبانی برای دستگاه‌های تعبیه‌شده، به‌ویژه برای دستگاه قهوه‌ساز در نظر گرفته شد. اینطوری اسمش پیدا شد...
    به طور کلی چه چیزی با او شروع شد، چه چیز خوبی در او بود و چرا محبوبیت زیادی به دست آورد؟ اول، آنها به طور کامل از میراث سیشنوی خلاص شدند. هیچ اشاره‌ای وجود ندارد، حتی راه‌هایی برای شلیک به بخشی از بدن و شکستن همه چیز. ثانیا، آنها ایده های بسیار جدیدتری را از نظر مدل شی معرفی کردند - یعنی C ++ خیلی زودتر از جاوا ظاهر شد و از یک مدل شی قدیمی تر و "وحشی" استفاده کرد. خب، اینجا (استاد به جاوا اشاره می کند) قبلاً در آن زمان بیشتر فکر شده بود و در تئوری مردم فکر می کردند و در عمل همه چیز را به کار می گرفتند و بسیار سردتر می کردند.

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

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

    یعنی اگر در C، در C ++، در پایتون، روی هر چیزی بتوانیم نوعی زباله‌دانی وحشتناک را از پروژه‌مان ایجاد کنیم، جایی که همه چیز به هم ریخته است، ساعت‌ها می‌رویم، و چیز دیگری وجود دارد. در جاوا، پرورش سطل زباله نیز امکان پذیر است، اما برای این کار باید کمی تلاش کنید. یعنی به طور پیش‌فرض معلوم نمی‌شود که یک "محل زباله" باشد، مشکلات دیگر معلوم می‌شود که چیزی به ارث رسیده است، در آنجا به ارث رسیده است - به طور کلی، ده خط نه چندان معنی‌دار یک خط معنادار است. اما، شاید چنین برنامه نویسی با مهارت متوسط ​​بتواند کدهای بسیار با کیفیتی بنویسد.
    تقریباً به پایان رسیده ایم. برای ما، چیز بعدی که ظاهر شد .Net (dotnet) است، و به طور خاص، ما به C # علاقه مندیم (تقریباً همان [استاد به جاوا اشاره می کند]، یعنی اگر بین آنها انتخاب کنید، تفاوت هایی در جزئیات وجود دارد. - ببینید کجا پول بیشتری بپردازید).

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

    مهم ترین نکته ای که باید به آن توجه کرد چیست؟ (مدرس فلش هایی را از C++ به جاوا، .Net، C#، JavaScript و PHP می کشد). برای نوشتن یک برنامه ساده به یکی از این زبان‌ها و در بسیاری از زبان‌های دیگر - اگر C ++ می‌دانید، معمولاً نیازی به دانستن هیچ چیز دیگری ندارید - می‌گیرید و به زبان C ++ می‌نویسید و سپس در ابتدا دلار اضافه می‌کنید. ، چیز دیگری کارهای کوچک را انجام می دهد و روی هر چیزی برای شما کار می کند (استاد به زبان هایی اشاره می کند که فلش های C ++ به آنها اختصاص داده شده است). یعنی در بعضی چیزهای ساده به شدت شبیه هم هستند. اگر برخی از مشکلات مدرسه، مشکلات آموزشی، چیز دیگری را حل می کنید (شما پروژه بزرگی طراحی نمی کنید - یک فایل دارید که اعداد را می خواند، اعداد را در کنسول نمایش می دهد، کار دیگری انجام می دهد)، پس تقریباً هیچ تفاوتی بین این زبان ها وجود ندارد. . واضح است که جاوا اسکریپت و PHP تخصصی هستند، همه چیز کمی متفاوت است. و در اینجا (استاد به جاوا و C # اشاره می کند) تفاوت بسیار کمی وجود دارد.

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

    انتخاب زبان بسته به وظیفه

    فرض کنید با وظیفه نوشتن درایور برای کارت گرافیک روبرو هستید. امروز از چه زبانی استفاده خواهید کرد؟ (از حضار فریاد بزنید: جاوا!) چرا... جاوا عالی است، اما چرا در روبی یا PHP نه؟ (مدرس به طعنه صحبت می کند.)

    برنامه نویسی سطح پایین

    اگر چیزی سطح پایین می نویسید، C بهترین انتخاب است، اما من شنیده ام (اما ندیده ام) که C++ برای این کار استفاده می شود. اما من به این اعتقاد کمی دارم، زیرا در C به وضوح می توانید کنترل کنید - از آنجایی که شما تعداد زیادی بایت حافظه داده اید، به این معنی است که تعداد زیادی بایت وجود خواهد داشت. و در C++ (STL)، یک رشته چگونه پیاده سازی می شود؟ خوب، به نوعی اجرا شده است. و در پایان، ما نمی دانیم چگونه و چه اتفاقی در آنجا می افتد، شاید حافظه ما در کارت گرافیک ما تمام شود یا اتفاق دیگری رخ دهد. بنابراین، C هنوز زنده است و نمی میرد، هنوز هم چنین وظایف برنامه نویسی سیستم وجود دارد - نوشتن یک سیستم عامل، نوشتن درایورها، نوشتن چیز دیگری - C برای این کار عالی است. علاوه بر این، اکنون انواع دستگاه ها ظاهر می شوند (اینترنت اشیا وعده می دهد که در شرف آمدن است) که با باتری زندگی می کنند (و البته میلیون ها نفر از آنها وجود خواهند داشت، همه چیز با این اینترنت اشیا آویزان خواهد شد) ، باید بسیار ارزان باشند و برق بسیار کمی مصرف کنند. بر این اساس، 2 کیلوبایت حافظه، پردازنده با فرکانس 5 کیلوهرتز وجود خواهد داشت و البته در آینده نزدیک امکان پیچیدن ماشین مجازی یا زبان اسکریپت وجود نخواهد داشت - به این معنی که باید بنویسید. چیزی در C و حتی اکنون، به عنوان مثال، محاسبات روی یک کارت گرافیک (OpenCL یا برخی فناوری های دیگر) - آنها زبان جدیدی برای نوشتن برنامه برای آنها پیدا نمی کنند - آنها C را با محدودیت های بزرگ انجام می دهند. فقط به این دلیل که مردم قبلاً می دانند چگونه، چرا چیز جدیدی یاد بگیرند؟ به طور رسمی، این احتمالاً به یک معنا نیز C.

    برنامه نویسی وب

    فرض کنید می خواهید یک فیس بوک (شبکه اجتماعی) جدید بنویسید. روی چه چیزی خواهید نوشت؟ (از مخاطبان آنها در مورد HTML و CSS صحبت می کنند.) HTML، CSS طراحی است، و ما می خواهیم که امکان افزودن عکس، پیدا کردن دوستان، گذاشتن نظر در آنجا وجود داشته باشد.

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

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

    برنامه نویسی کسب و کار

    در مرحله بعد، می خواهید یک برنامه بانکی خسته کننده بنویسید. یا مثلا کسی سیم کارت می فروشه؟ شاید تا به حال یک تلفن یا چیزی خریده باشید و به شما بگویند: "اینجا سیستم معلق است، ما نمی توانیم کاری انجام دهیم." چنین برنامه ای را روی چه چیزی می نویسید؟ (فریاد حضار در مورد پایتون) شما نمی توانید چنین چیزهایی را در پایتون بنویسید، شما چیست؟ هیچ چیزی برای تجارت نباید در پایتون نوشته شود. چرا؟ زیرا وقتی چیزی در پایتون می نویسید، نمی توانید تعداد قابل توجهی باگ را در فرآیند نوشتن پیدا کنید. پایتون به هر شکل ممکن به صورت پویا تایپ می شود و در کل می توانید یک باگ را در آنجا پنهان کنید تا در شرایطی ظاهر شود که حتی نتوانید بفهمید این کاربران کلاهبردار آنجا چه کردند که همه چیز برای شما خراب شد. یعنی بهتر است برای خود پایتون بنویسید، اسکریپت های کوچک - متوجه می شوید که در آنجا چه اتفاقی می افتد و چه کاری انجام می شود. خوب، یا چیزی که بدتان نمی‌آید دور بریزید: می‌خواهید چیزی را قبل از رقبای خود عرضه کنید، پس اگر هر بار خراب شود چه می‌شود. شما در پایتون نوشتید و تمام - بازار را تسخیر کردید. و اگر چیزی را برای مدت طولانی می نویسید، مثلاً نوعی برنامه بانکی (به طوری که وام ها را تأیید می کند، چیز دیگری) - آن را در جاوا می نویسید. چون اونجا قضیه جدیه، اوراق، پول، مدارک، یه چیز دیگه، ولی نمیشه انقدر خرابش کرد که همه چیز خراب بشه، وگرنه مردم آزرده میشن - پولشون رفت و به جایی نرسید، چون داری یک لحظه رشته به عدد تبدیل شد یا برعکس. پس یعنی شما روشمند می گیرید و در جاوا می نویسید، می نویسید... خوب یا در نت، اصولا چنین شرایطی هم پیش می آید. البته در آنجا نیز می توانید با مشکلاتی روبرو شوید ، اما هنوز هم احتمال این امر تا حدودی کمتر است.

    برنامه نویسی برای ارتش، صنعت هوافضا

    حالا تصور کنید که تصمیم گرفتند شما را با موشک به ماه بفرستند. برای نوشتن کدی که موتورهای موشک را کنترل می کند، چه چیزی را ترجیح می دهید؟ بیایید نگاهی بیندازیم. این احتمالاً (استاد به Perl ، Python ، PHP ، Ruby اشاره می کند) ارزشش را ندارد - کند می شود ، اتفاق دیگری در حال رخ دادن است ، خوب ، به طور کلی ، من با پرواز روی چنین موشکی موافق نیستم. در C++؟ صادقانه بگویم، من هم این کار را نمی کنم، زیرا راه های زیادی برای کشتن خود در C++ وجود دارد. وقتی جایی در فضا هستید، خیلی خوب نیست.

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

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

    استفاده از چندین زبان برای توسعه نرم افزار به طور همزمان

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

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

    شرایط موفقیت هر زبان برنامه نویسی

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

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

    مشکل چیه؟ چرا برخی از زبان‌ها مانند پایتون، که هیچ شرکتی در ابتدا از آن‌ها پشتیبانی نمی‌کرد، بازار را تصاحب کردند. PHP که طراحی ضعیفی نیز دارد، بازار را (بیشتر آن) نیز به خودی خود تصاحب کرد. و انواع و اقسام میلیاردها دلار سرمایه گذاری شد (استاد به آدا اشاره می کند) و به جایی نرسید، هیچ اتفاقی نیفتاد. به چی ربط داره؟ دلیلش این است که هیچ زیرساختی در اطراف این زبان ها وجود ندارد. یعنی زبان می تواند عالی باشد، اما تا زمانی که هیچ مستندی وجود نداشته باشد، تا زمانی که جامعه ای وجود نداشته باشد که بتواند به سؤالات پاسخ دهد (در Stack Overflow)، و، در نهایت، مهمتر از همه، تا زمانی که تعداد زیادی وجود نداشته باشد. تعداد کتابخانه ها، زبان شلیک نمی کند. یعنی شما مثلاً می خواستید یک وب سایت در Oberon بنویسید. و آن چیست، چرا که نه؟ و مشکل شروع می شود ... شما نمی توانید وب سرور خود را روی Oberon راه اندازی کنید تا آن را به آرامی آزمایش کنید، نمی توانید هیچ کتابخانه ای را متصل کنید، زیرا آنها در Oberon نیستند. و همه اینها از طریق نوعی عصا انجام می شود، نیروها از بین می روند و در کل شما به جای اوبرون، تف می کنید و سایت خود را با C خالص می نویسید. و زبان هایی که قادر به استفاده از کتابخانه های زبان های دیگر هستند به خوبی زندگی می کنند. همون پایتون در اون جاهایی که سرعتش کم میشه. خب، به طور کلی، انواع چیزهای استاندارد مانند مرتب سازی و چیزهای دیگر در C نوشته می شوند و او (پایتون) می داند که چگونه با آنها تعامل داشته باشد.

    جاوا همچنین دارای یک رابط بومی جاوا است. این اساساً C است، یعنی آنجا (به نظر من، آنها همیشه می خواهند تحریم کنند، اما به نظر می رسد هنوز ممنوع نشده اند) این زبان ها می توانند با کتابخانه های موجود (عمدتاً Cs) تعامل داشته باشند. و به این دلیل می گیرند و کار می کنند. شما ایده ای را که می خواهم به شما منتقل کنم، درک می کنید، درست است؟ به زبان هایی که نمی دانند چگونه به کتابخانه C متصل شوند، ننویسید. خوب، اگر می خواهید از چیز جالب استفاده کنید. خوب، و به تدریج آنها (زبان ها) نوعی زیرساخت را به دست می آورند. و خوب زندگی می کنند.

    زبان برنامه نویسی و راهنمایی شغلی

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

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

    اگر می‌خواهید برنامه‌ها، مرورگرها، اسباب‌بازی‌ها و چیز دیگری بنویسید، C ++ عالی است. اگر می‌خواهید وب‌سایت‌ها را بنویسید، زبان‌های انتخابی شما اینجا هستند (مدرس Perl، Python، PHP، Ruby را نشان می‌دهد)، تفاوت زیادی وجود ندارد. تنها چیزی که وجود دارد این است که PHP قبل از پایتون خواهد مرد، بنابراین اگر برای یادگیری چیزهای جدید تنبل هستید، پایتون را یاد بگیرید. تفاوت زیادی را متوجه نخواهید شد، اما بیشتر دوام خواهید آورد.

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

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

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

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

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

    برنامه توزیع زبان ها در المپیاد روسی در انفورماتیک چگونه است؟ افرادی که در مسابقه همه روسی، جالبترین المپیاد شرکت می کنند، روی چه چیزی می نویسند؟ به نظر می رسد (در اینجا به معنی پاسکال است، و اینجا حدود 2000 است، و اینجا حدود صفر است، اینجا C ++، و اینجا 2015 است).

    در سال 2000، تقریبا هیچ کس C++ را ننوشت. 15 سال می گذرد و با وجود مدرن بودن پاسکال، تقریباً هیچ کس به پاسکال نمی نویسد. این زبانی است که تقریباً می تواند همین کار را انجام دهد. فقط این است که همه برای یادگیری این موضوع تنبل شده اند، با انواع گرایش های جدید، و همه به نوشتن در Borland Pascal ادامه می دهند، که البته، کاری نمی تواند انجام دهد. در C++، مردم برخی الگوریتم‌ها (STL) را برای مرتب‌سازی می‌نویسند - عالی است، آنها مرتب کردن () را نوشتند و تمام. در پاسکال، در معمول، در قدیمی - این یک مشکل است. آنها مجموعه ای نوشتند (نیاز) - عالی، آنها آن را در C ++ نوشتند، در پاسکال دوباره عذاب محض. در پاسکال های جدید، البته، می توانید این کار را انجام دهید، اما آنها به طور کلی هزینه دارند. شاید به آن توجه نکرده باشید، اما اینطور است.

    جاوا نیز وجود دارد، اما در جاوا حروف زیادی وجود دارد. این برای پروژه های بزرگ است، اما برای برنامه های کوچک یک بار مصرف بسیار بد است، زیرا حروف اضافی زیادی وجود دارد. اما برخی از مردم نیز می نویسند، شما می توانید یاد بگیرید که روی آن بنویسید. اما در USE در دسترس نیست و USE همچنان باید در بیشتر موارد استفاده شود.

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

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

    اکنون در مورد نحوه ساخت دوره در HSE صحبت خواهم کرد، زبان ها به چه ترتیبی تدریس می شوند، چگونه در ریاضیات کاربردی و علوم کامپیوتر دانشکده علوم کاربردی مطالعه می شوند، که ما با Yandex انجام می دهیم. در ترم اول - پایتون (نه به طور کامل، در مورد اینکه چگونه باید در مدرسه به شما آموزش داده شود) و C ++ (از قبل گسترده تر، بسیار گسترده تر از آنچه معمولاً در مدارس تدریس می شود). بیایید فوراً بگوییم تا نترسید، اگر ناگهان بخواهید این کار را انجام دهید، می گویید: "چی، من قبلاً همه اینها را می دانم، چرا باید بروم جایی برای مطالعه؟ ترجیح می دهم جای دیگری بروم." برای کسانی که از قبل می دانند چگونه به خوبی برنامه ریزی کنند، فرصتی وجود دارد که بلافاصله به مطالعه الگوریتم ها و در یک آمادگی نسبتاً نظری بروند. ما الان به آنها نگاه نمی کنیم، این (به تخته سیاه اشاره می کند) برای کسانی است که به طور متوسط ​​برنامه نویسی می کنند یا اصلا برنامه نویسی نمی کنند.

    ترم اول اصول پایتون را به شما می آموزد، فقط برای اینکه مردم یاد بگیرند که چگونه برنامه نویسی کنند و هیچ کس بیش از حد توهین نشود. پایتون به ندرت در مدارس آموزش داده می شود، بیشتر افرادی با دانش پاسکال یا C ++ می آیند. اساسا حتی پاسکال، اگر یک مدرسه انبوه باشد. خوب، برای اینکه هیچکس توهین نشود، همه در حال یادگیری یک زبان جدید هستند (انگار در شرایط برابر هستند). و C++، صرفاً به این دلیل که از C++ می‌توانید به هر جایی بروید.

    سپس دوره "الگوریتم ها" و یک پروژه دوره جداگانه می آید. الگوریتم های کلاسیک با پیاده سازی نه اینکه در تئوری چیزی را گرفتیم، پیچیدگی را محاسبه کردیم. در سخنرانی، ما گرفتیم، پیچیدگی را محاسبه کردیم، در سمینار - الگوریتم را گرفتیم، پیاده سازی کردیم. یک پروژه دانش آموزانی است که کار تمام شده را انجام می دهند. به عنوان مثال، یکی از پروژه ها این بود: برای محاسبه ... فرض کنید شما آپارتمان های زیادی در مسکو دارید و می فهمید: «اوه، من چیزهای اضافی زیادی دارم، یکی را اجاره می کنم. و آنها مقداری قیمت تعیین می کنند و هیچ کس نمی خواهد یک آپارتمان از شما اجاره کند - احتمالاً خیلی گران است. یا مقداری قیمت گذاشتند، بلافاصله آن را از شما برداشتند و فکر می کنید: "اوه، احتمالاً من آن را ارزان گذراندم" - و شما نیز ناراحت هستید. یعنی باید محاسبه می شد که هزینه اجاره آپارتمان چقدر است؟ شما در داده ها رانندگی می کنید - تخمینی برای شما ایجاد می کند. چنین سایتی که از چند چیز تشکیل شده بود: جمله بردارید، تجزیه کنید، یک نوع الگوریتم یادگیری ماشینی (احتمالا) ساده را اعمال کنید و یک صفحه وب زیبا بسازید که در آن می توانید چیزی را انتخاب کنید، چیزی را در آن برانید، چند متر، تعدادی اتاق، تعداد سونا، تعداد جکوزی در آپارتمان شما و تخمین تقریبی هزینه. این است که، برخی به پایان رسید، چیز خیلی پیچیده نیست. در اینجا به معنای (استاد به یک دوره در مورد الگوریتم ها اشاره می کند) چنین C ++ قوی، با کنسول I / O است. خوب، و اینجا (استاد به کتیبه "پروژه" اشاره می کند) چیزی تحت هدایت یک مربی، شاید با پایگاه داده، شاید با تجزیه متن و چیز دیگری.
    سپس ترم سوم می آید - دوره ای به نام "سیستم های کامپیوتری". مقدار کمی اسمبلر برای درک وجود دارد (خیلی کم) و سپس چیزی شبیه به C خالص و تعامل با سیستم عامل ها، برنامه نویسی سیستم در اصل. و پروژه سمینار نیز چیزی است در مورد انواع تعاملات شبکه، کاملا سطح پایین: توسعه برخی از ابزارها، به عنوان مثال rsync (همگام سازی، احتمالاً می دانید. در C خالص، کم و بیش، یک آنالوگ بنویسید rsync، که در پوشه های همگام سازی شبکه با تمام دسترسی به فایل ها و غیره خواهید داشت).

    و در نهایت، چهارم. من حتی نمی‌دانم اسمش را چه بگذارم، چنین ترکیبی از فناوری‌ها برای توسعه واقعی، مانند توسعه وب، مورد نیاز است. یعنی این کاربرد عملی پایگاه های داده است، دوباره چیزی شبیه به آنچه در پروژه انجام شده است (استاد 2 دوره در مورد پروژه را نشان می دهد)، اما در حال حاضر عمیق تر است. یعنی چنین چیزهای کم و بیش عینی در حال حاضر، برنامه نویسی عملی. به موازات این، هر نظریه ای وجود دارد، خب، اینجا هنوز دارند علم می کنند.

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

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

    چگونه به عنوان برنامه نویس شغل پیدا کنیم

    شما هستید ( مدرس به لیست دوره ها اشاره می کند) همه کارها را انجام دادید، در دانشگاه یاد گرفتید، دو سال دیگر کار مفیدتری انجام دادید و باید سر کار بروید. چگونه چیزی را برای کار انتخاب می کنید؟ اولاً، شما همه چیز را شناختید، به جایی عمیق رفتید و قبلاً می دانید چه چیزی را دوست دارید. شما باید آنچه را که دوست دارید به طور طبیعی انتخاب کنید. چون اگر عشق بورزید، زحماتتان را سرمایه گذاری می کنید، انگیزه خواهید داشت و در کل همه چیز خوب می شود. زیرا فقط پول نیست، بلکه برای شما جالب و دلپذیر است. خوب، و شما می خواهید وارد یک شرکت جالب شوید، شغلی پیدا کنید. من شخصا دوست دارم چه جور آدمی را ببینم؟ فرض کنید صد دانش آموز پیش من بیایند - من باید دو تا را به محل کار ببرم یا یکی را. چرا می آیند، من اصلاً نمی فهمم آنها چه کسانی هستند، چه هستند، چگونه هستند؟ در بهترین حالت مدرکی را که در دانشگاه گرفته اند به من نشان می دهند و من می گویم: «عجب! این یک دیپلم باحال است، اما این خیلی باحال نیست!» و اتفاقا من ممکن است اشتباه کنم. شاید فرد وقت آزاد زیادی داشت و خیلی بهتر یاد گرفت.

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

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

    برنامه نویس کسی نیست که تنها بنشیند (ایندی) در گاراژ، جایی با چراغ های خاموش، با کسی صحبت نکند، ریش بگذارد و بنویسد. در عین حال، نوعی تعامل با مردم وجود دارد. مثلاً با رئیسی که ممکن است گاهی به شما فحش بدهد (رئیس، آنها اینطور هستند، همیشه مهربان نیستند). و من می بینم که شما می دانید چگونه با مردم کار کنید و اگر تیم خوبی داشته باشید، خوشحالم می کنم. حتی اگر خوب نباشد، بهتر از هیچ است.

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

    و در نهایت بسته به موقعیت خاص، موارد متفاوت دیگری نیز وجود دارد. اگر برای شغلی به عنوان تحلیلگر درخواست می دهید، از شما می خواهم مشکلات تجزیه و تحلیل داده ها را در Kaggle حل کنید. اگر در برخی از موارد الگوریتمی شغلی پیدا کردید، از شما می خواهم الگوریتم هایی را در برنامه نویسی ورزشی انجام دهید. و در نهایت، اگر به این حرفه فکر کردید، بخوانید که مصاحبه‌ها چگونه پیش می‌رود، دیدید که در آنجا عده‌ای نارضایتی شدید می‌کنند: «من آمدم و از من می‌پرسند سرگرمی من چیست. من مثل جغد می‌نشینم و جواب نمی‌دهم چون سرگرمی ندارم» و آنها فکر می‌کنند که منابع انسانی این کار را می‌کنند. در واقع، آنها سعی می کنند بفهمند که شما چقدر دوستانه و کافی هستید. اگر غیردوستانه و ناکافی هستید، مهم نیست که چقدر نابغه و معتاد به کار هستید، یک متخصص باحال با دانش عالی، کار تیم برای شما دشوار خواهد بود و شما نمی توانید به تنهایی پروژه را بیرون بکشید. علاوه بر این، حتی اگر آن را بیرون بکشید، می توانید تصور کنید که شرکت با چه بار سنگینی روبروست. و فردا چه می‌آیی و می‌گویی: «حقوقم را 10 برابر کن وگرنه تو را ترک می‌کنم». البته شرکت ها نمی خواهند وارد چنین شرایطی شوند. بنابراین، پرورش کفایت و حسن نیت در خود به همان اندازه (حداقل) مهم است که توسعه برخی مهارت های حرفه ای.

    به طور خلاصه، چه می توان گفت؟ کدام زبان خوب و کدام بد است؟ خوب، در یک گروه از زبان ها، به عنوان مثال بین روبی، پایتون و PHP، چه چیزی را انتخاب کنیم؟ البته، پاسخ صحیح پایتون است، اما در واقع تفاوت بین آنها در تعداد اشکالات مجاز است، در مقدار چیز دیگری - 5٪، خوب، شاید 10٪. یعنی اگر قبلاً یک پروژه تمام‌شده نوشته شده با PHP دارید، هیچ کس در ذهنش نمی‌گوید: «بیایید همه چیز را در پایتون بازنویسی کنیم». آنها خواهند گفت: "بیایید توسعه دهندگان PHP بیشتری استخدام کنیم و به نوشتن در PHP ادامه دهیم." خوب، این انتخاب خوبی است. البته، اگر به طور ناگهانی شروع به نوشتن نوعی پروژه کردید، شاید عاقلانه باشد که اکنون پایتون را انتخاب کنید. اگرچه، این نیز بستگی دارد. شاید برنامه‌نویس‌های ارزان PHP زیادی در بازار داشته باشید، و برنامه‌نویس‌های پایتون گران هستند، و فکر می‌کنید: «بله، فناوری جالب‌تر است، اما من در هزینه‌های توسعه‌دهندگان آماده صرفه‌جویی می‌کنم». و همه چیز خوب است، شما قبلاً آمده اید و آنجا کار می کنید.
    چگونه بین جاوا و سی پلاس پلاس یکی را انتخاب کنیم؟ بله، دقیقاً همین اتفاق می افتد. من فکر می کنم زمانی که تصمیم بگیرید به چه زبانی یک پروژه بزرگ جدید را شروع کنید، دانشی در زمینه حرفه ای خود به دست خواهید آورد و می توانید انتخاب درستی داشته باشید. در حال حاضر مجبور نیستید این انتخاب را انجام دهید، بنابراین من به شما توصیه می کنم کاری را که دوست دارید انجام دهید.

    همان طور که گفتم، اصول اولیه برنامه نویسی (یک تابع چیست، if’s، for’s، آرایه ها و چیزهای دیگر) کم و بیش در هر زبانی قابل یادگیری است. به عنوان مثال، در C ++، از آنجایی که بسیاری از چیزها شبیه به آن هستند، و مشخصات آن (در این سطح) کمترین، و کمترین حروف غیر ضروری برای نوشتن است. خوب، پس وقتی چیزهای پیچیده معماری را یاد می گیرید، یاد خواهید گرفت و نیازی نیست که زیاد نگران این موضوع باشید. یعنی نکته اصلی این است که سعی کنید، به دنبال چیزی باشید که دوست دارید، و وقتی متوجه شدید که ساعت 4 صبح است و برای سرگرمی نشسته اید و می نویسید، زیرا آن را دوست دارید - احتمالاً در این لحظه ای مشخص می شود که شما خود را پیدا کرده اید.

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

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

      مطالب 1 توسط سازنده یا پلتفرم 1.1 Flash 1.2 Java 1.3 Microsof ... ویکی پدیا

      فهرست زبان‌های برنامه‌نویسی بر اساس دسته‌بندی Chronological Genealogical Timeline زبان‌های برنامه‌نویسی فهرستی از زبان‌های برنامه‌نویسی است که به ترتیب زمانی ترتیب داده شده‌اند. مطالب ... ویکی پدیا

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

      این صفحه یک لیست اطلاعاتی است. زبان‌های برنامه‌نویسی دات‌نت (زبان‌های دارای CLI یا زبان‌های CLI) زبان‌های برنامه‌نویسی رایانه‌ای که برای ایجاد کتابخانه‌ها و برنامه‌هایی استفاده می‌شوند که الزامات Comm ... ویکی‌پدیا

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

      زبان برنامه نویسی سی شارپ یکی از محبوب ترین زبان های برنامه نویسی امروزی است. نرم افزار گرافیکی شطرنجی منبع باز Paint.NET SharpDevelop IDE منبع باز برای C#، Visual Basic.NET (VB.NET)، Boo ... ویکی پدیا

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

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

    کتاب ها

    • پایتون برای بچه ها آموزش برنامه نویسی، جیسون بریگز. درباره کتاب این کتاب آموزش یکی از محبوب ترین زبان های برنامه نویسی امروز - پایتون است. با شروع با ساده ترین مراحل، مرحله به مرحله، شما می نویسید…
    • جاوا اسکریپت برای بچه ها آموزش برنامه نویسی، نیک مورگان. درباره کتاب این کتاب به شما امکان می دهد به راحتی در برنامه نویسی غوطه ور شوید و به جاوا اسکپت تسلط پیدا کنید. شما چند بازی واقعی خواهید نوشت - شکار گنج روی نقشه، "Gallows" و "Snake". در هر…

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


    زبان های برنامه نویسی سطح بالا و پایین

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

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

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

    در اینجا یک نمونه از کد بومی آمده است:

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

    نوشتن مستقیم روی کد ماشین ممکن است، اما بسیار دشوار است.

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

    در کد ماشین، می‌توانید چیزی شبیه «10110000 01100001» بنویسید، اما زبان اسمبلی می‌تواند آن را به‌عنوان «MOV AL، 61h» ساده‌سازی کند. هنوز یک تناظر تقریباً یک به یک بین آنچه به زبان اسمبلی نوشته شده و دستورالعمل های داده شده به دستگاه وجود دارد.

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

    زبان های برنامه نویسی سطح بالا

    مانند زبان های سطح پایین تر، سطوح بالاتر طیف وسیعی از انتزاعات را پوشش می دهند. برخی از زبان‌ها، مانند جاوا (که بسیاری آن را زبان‌های برنامه‌نویسی سطح متوسط ​​می‌دانند)، همچنان کنترل زیادی بر نحوه مدیریت حافظه و داده‌ها توسط رایانه به شما می‌دهند.

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

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

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

    توجه به این نکته مهم است که «زبان های برنامه نویسی سطح بالا» می توانند شامل هر چیزی انتزاعی تر از زبان اسمبلی باشند.

    چه زبانی را مطالعه کنیم: سطح پایین یا بالا؟

    این مطمئناً یک سؤال رایج در بین برنامه نویسان جدید و تازه کار است. کدام زبان های برنامه نویسی برای یادگیری بهتر است: سطح بالا یا پایین؟ همانطور که در مورد بسیاری از سوالات برنامه نویسی وجود دارد، سوال زبان های برنامه نویسی سطح بالا و سطح پایین چندان ساده نیست.

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

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

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

    • جاوا اسکریپت
    • پایتون

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

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

    میخوای چیکار کنی؟

    وقتی تصمیم می گیرید که کدام زبان را یاد بگیرید، اولین سوال شما باید این باشد: چه چیزی را می خواهید برنامه ریزی کنید؟

    اگر می‌خواهید سیستم‌عامل‌ها، هسته‌ها یا هر چیز دیگری را برای اجرا با حداکثر سرعت برنامه‌نویسی کنید، یک زبان سطح پایین‌تر ممکن است انتخاب خوبی باشد. بیشتر ویندوز، OS X و لینوکس به زبان های C و مشتق از C مانند C++ و Objective-C نوشته شده است.

    بسیاری از برنامه های مدرن به زبان های سطح بالاتر یا حتی زبان های خاص دامنه نوشته شده اند. Python و Ruby به ویژه برای برنامه های کاربردی وب محبوب هستند، اگرچه HTML5 روز به روز قدرتمندتر می شود. زبان هایی مانند Swift، C#، JavaScript و SQL نقاط قوت و ضعف خاص خود را دارند.

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

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

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

    شما به زودی شباهت ها را خواهید دید و درک عمیق تری از نحوه کار برنامه نویسی به دست خواهید آورد.

    روی هدف تمرکز کنید نه ابزار

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

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

    آیا تجربه زبان های سطح بالا و پایین را دارید؟ آیا یکی را بر دیگری ترجیح می دهید؟ نظرات خود را در نظرات زیر به اشتراک بگذارید!