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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    زبان های برنامه نویسی مختلف و حوزه های کاربردی آنها. سخنرانی در 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 زبان اصلی برای توسعه وب بود. البته نمی توان مقیاس را با آنچه اکنون در حال وقوع است مقایسه کرد.

    پی اچ پی به صورت تصادفی به صورت ... ظاهر شد. یک نفر خیلی سریع این کار را متوقف کرد - او نوعی صفحه شخصی خود را ایجاد کرد، او نوعی کتاب مهمان داشت، چیز دیگری، نوعی چیز. و او مجموعه‌ای از ماکروها را برای پرل نوشت که شبیه 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 صبح است و برای سرگرمی نشسته اید و می نویسید، زیرا آن را دوست دارید - احتمالاً در این لحظه ای مشخص می شود که شما خود را پیدا کرده اید.

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

    ما آگهی های شغلی ارسال شده در Indeed.com را تجزیه و تحلیل کردیم تا هفت زبان برنامه نویسی پرتقاضا در سال 2018 را شناسایی کنیم. برخی از زبان‌ها، مانند سوئیفت و روبی، به هفت زبان برتر راه پیدا نکردند، زیرا از محبوبیت کمتری نزد کارفرمایان برخوردارند.

    تقاضا برای جاوا در سال 2018 نسبت به سال 2017 حدود 6000 فرصت شغلی کاهش یافته است. اما این زبان برنامه نویسی همچنان محبوب است. جاوا بیش از 20 سال است که توسط میلیون ها توسعه دهنده و میلیاردها دستگاه در سراسر جهان استفاده می شود. این می تواند بر روی هر سخت افزار و سیستم عاملی از طریق ماشین مجازی جاوا اجرا شود.

    تمامی برنامه های اندروید بر پایه جاوا هستند. 90 درصد از شرکت های Fortune 500 از جاوا به عنوان زبان برنامه نویسی سمت سرور خود استفاده می کنند.

    2. پایتون

    محبوبیت پایتون با حدود 5000 آگهی شغلی افزایش یافته است. این یک زبان برنامه نویسی عمومی است که برای توسعه وب استفاده می شود. همچنین به طور گسترده در محاسبات علمی و داده کاوی استفاده می شود. تقاضای مداوم برای توسعه دهندگان یادگیری ماشین باعث افزایش تقاضا برای Python شده است.

    3. جاوا اسکریپت

    جاوا اسکریپت امروزه به اندازه سال 2017 محبوب است. این زبان برنامه نویسی توسط بیش از 80 درصد توسعه دهندگان و 95 درصد از همه سایت ها برای ساخت عناصر پویا در صفحات وب استفاده می شود. تعدادی از فریم‌ورک‌های جاوا اسکریپت فرانت‌اند مانند React و AngularJS پتانسیل بالایی دارند. اینترنت اشیا و دستگاه های تلفن همراه روز به روز محبوب تر می شوند، بنابراین ما شک داریم که به زودی شاهد کاهش تقاضا برای برنامه نویسان جاوا اسکریپت باشیم.

    4. C++

    تقاضا برای C++ از سال 2017 تغییر چندانی نکرده است. این زبان برنامه نویسی برای ایجاد نرم افزار سیستم / برنامه کاربردی، توسعه بازی ها، درایورها، برنامه های کاربردی سرویس گیرنده-سرور استفاده می شود. بسیاری از برنامه نویسان C++ را پیچیده تر از زبان های برنامه نویسی مانند پایتون یا جاوا اسکریپت می دانند. اما هنوز در بسیاری از سیستم های قدیمی در شرکت های بزرگ استفاده می شود.

    5.C#

    محبوبیت سی شارپ (با تلفظ "C sharp") امسال اندکی کاهش یافته است. سی شارپ یک زبان برنامه نویسی شی گرا است که برای توسعه بر روی پلت فرم دات نت مایکروسافت طراحی شده است.

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

    6 پی اچ پی

    این زبان برنامه نویسی سمت سرور در رتبه بندی ما (در مقایسه با سال گذشته) به رتبه ششم رسیده است. اکثر توسعه دهندگان از PHP برای پیاده سازی ویژگی هایی استفاده می کنند که HTML از آنها پشتیبانی نمی کند. و همچنین برای تعامل با پایگاه داده MySQL.

    7. مروارید

    تقاضا برای Perl حدود 3000 شغل کاهش یافت و در رتبه هفتم ما باقی ماند. پرل همچنان در بین مدیران سیستم و شبکه محبوب است.

    نگاهی به آینده

    اینها زبانهای برنامه نویسی هستند که هنوز در رتبه بندی ما قرار نگرفته اند. اما در سال 2018 آنها محبوبیت بیشتری پیدا کردند. آنها را در آینده دنبال کنید!

    • Swift: یک زبان برنامه نویسی برای iOS و macOS که توسط اپل در سال 2014 منتشر شد، رتبه 14 در رتبه بندی ما. این به این دلیل است که بسیاری از مشاغل توسعه‌دهنده الزامات را به عنوان "iOS" بدون تعیین زبان خاصی بیان می‌کنند. سوئیفت به طور پیوسته در حال افزایش محبوبیت است.
    • R: رتبه یازدهم را در رتبه بندی ما گرفت. اما ما انتظار داریم که این زبان برنامه نویسی در چند سال آینده سر به فلک بکشد. او چه در رتبه بندی های بین المللی و چه در ایالات متحده محبوبیت بیشتری پیدا می کند. رشد تقاضا برای توسعه دهندگان R به دلیل استفاده روزافزون از زبان در تجزیه و تحلیل داده ها است.
    • Rust : اگرچه Rust در رتبه بندی ما رتبه چندان بالایی ندارد، طبق Google Trends، به طور پیوسته در حال توسعه است.

    فناوری های دیگری که باید از آنها آگاه بود

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

    • SQL: یک زبان پرس و جو استاندارد که برای ذخیره و پردازش اطلاعات در پایگاه های داده طراحی شده است. دانش SQL در بین کارفرمایان تقاضای زیادی دارد. او در بیش از 30 هزار جای خالی ذکر شده است.
    • دات نت: پلتفرم مایکروسافت برای توسعه برنامه های کاربردی دسکتاپ، موبایل و وب. توسط زبان های برنامه نویسی مانند سی شارپ، ویژوال بیسیک و F# استفاده می شود. و پیاده سازی چند پلتفرمی این فناوری، دات نت را برای iOS، لینوکس و اندروید گسترش می دهد.
    • Node: یک محیط متن باز است که به شما امکان می دهد کد جاوا اسکریپت را در سمت سرور اجرا کنید. این امکان استفاده از یک زبان برنامه نویسی را برای کل برنامه وب فراهم می کند. توصیه می کنیم برای یادگیری Node.js کمی وقت بگذارید.
    • MEAN : پشته MEAN (MongoDB، ExpressJS، AngularJS و Node.js) در رتبه 18 ما قرار دارد. استفاده از پشته به شما امکان می دهد تا برنامه های جاوا اسکریپت کامل ایجاد کنید. یادگیری MEAN پایه ای برای توسعه در یکی از محبوب ترین زبان های برنامه نویسی در جهان فراهم می کند.

    ترجمه مقاله "7 زبان برنامه نویسی پرتقاضا در سال 2018"توسط یک تیم پروژه دوستانه آماده شد.

    خوب بد

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

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

    برنامه نويسي؟

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

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

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

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

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

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

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

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

    محبوب ترین زبان های برنامه نویسی

    محبوب ترین زبان های برنامه نویسی امروز کدامند؟

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

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

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

    C، C++ و C#

    بیایید با خانواده C شروع کنیم.

    زبان C در دهه 70 گردآوری و توسعه یافته است. بر اساس آن، زبان هایی مانند C ++ و C #، جاوا متعاقبا ایجاد شد.

    C++ یک زبان قدرتمند است که برای ایجاد برنامه های کاربردی و درایورهای سطح پایین و برنامه ها و بسته های نرم افزاری بسیار چشمگیر طراحی شده است.

    سی شارپ یک زبان شی گرا مدرن است که مبتنی بر C و C++ است. دارای سیستم نوع ایمن. یکی از ویژگی های متمایز آن این است که بسیار شبیه به زبان برنامه نویسی محبوب دیگر - جاوا است.

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

    می توان اشاره کرد که از بسیاری جهات C، C++ و C# زبان های برنامه نویسی برای مبتدیان هستند. با تسلط بر آنها، می توانید مطمئن باشید که یادگیری یک زبان جدید حداقل زمان می برد.

    می توانید با آنها آشنا شوید و اولین برنامه های خود را در محیطی خاص Borland یا Visual Studio بنویسید.

    جاوا اسکریپت

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

    شایان ذکر است که با وجود شباهت در نام، جاوا اسکریپت و جاوا دو زبان کاملا متفاوت هستند.

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

    جاوا

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

    پایتون

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

    اصول اولیه زبان پایتون را می توان هم به عنوان شروع برنامه نویسی و هم به عنوان زبان اضافی دوم یاد گرفت.

    یاقوت سرخ

    Ruby یک زبان برنامه نویسی سطح بالا است که شامل بخش هایی از Perl، Smalltalk، Eiffel، Ada و Lisp است. از سال 1995 استفاده شده است. از مزایای اصلی این زبان می توان به سادگی و انعطاف پذیری آن اشاره کرد. هم برای نوشتن برنامه های کوچک و هم برای توسعه برنامه های جدی مناسب است.

    زبان پی اچ پی

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

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

    نتیجه

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

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

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

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

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

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

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

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

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

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

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

    اشتیاق، کنجکاوی و تخیل سه ویژگی مهمی هستند که هر برنامه نویسی باید داشته باشد. اگر آنها را دارید، فقط باید نگران چیزهای کوچک باشید: چه زبان برنامه نویسی را یاد بگیرید (مثلا C ++)، چه چیزی در ریاضیات وجود دارد و غیره.

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

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

    0010 1010 0001 1101

    UN 1100 1010 1111

    0101 IT 1101 0101

    1101 1111 0010 1001

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

    اکنون می خواهم به شما توضیح دهم که باید یک زبان برنامه نویسی (Basic، Pascal) را از پیاده سازی آن که معمولاً به عنوان بخشی از یک محیط برنامه نویسی (Quick Basic، Virtual Pascal) ارائه می شود متمایز کنید - مجموعه ای از ابزارها برای ویرایش کدهای منبع. ، تولید کدهای اجرایی، اشکال زدایی، مدیریت پروژه ها و غیره. نحو و معنای یک زبان برنامه نویسی در استاندارد زبان ثابت شده است. هر محیط برنامه نویسی مفسر یا کامپایلر مخصوص به خود را از این زبان ارائه می کند که اغلب امکان استفاده از ساختارهایی را که در استاندارد ثابت نشده اند را می دهد.

    زبان های برنامه نویسی اصلی و محبوب را در نظر بگیرید

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

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

    فرترن- یک زبان برنامه نویسی سطح بالا که توسط IBM در سال 1956 برای توصیف الگوریتم هایی برای حل مسائل محاسباتی توسعه یافت. متعلق به دسته زبان های رویه گرا است. رایج ترین نسخه های این زبان عبارتند از Fortran IV، Fortran 77 و Fortran 90. این زبان در تمامی کلاس های کامپیوتر استفاده می شود. آخرین نسخه آن نیز در رایانه هایی با معماری موازی استفاده می شود.

    آدا- یک زبان برنامه نویسی سطح بالا، جهت استفاده در سیستم های بلادرنگ و طراحی شده برای خودکارسازی وظایف مدیریت فرآیندها و/یا دستگاه ها، به عنوان مثال، در رایانه های داخلی (کشتی، هوانوردی و غیره). به ابتکار وزارت دفاع ایالات متحده در دهه 1980 توسعه یافت. به نام ریاضیدان انگلیسی آدا آگوستا بایرون (Lovelace) که از 1815-1851 زندگی می کرد.

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

    پاسکالپاسکال که توسط نظریه‌پرداز معروف N. Wirth بر اساس ایده‌های Algol-68 توسعه یافت، عمدتاً برای آموزش برنامه‌نویسی در نظر گرفته شد. بر اساس اصل "ضروری و کافی" ساخته شده است، دارای کنترل نوع قوی، ساختارهایی برای توصیف ساختارهای داده دلخواه، مجموعه کوچک اما کافی از اپراتورهای برنامه نویسی ساخت یافته است. متأسفانه، وجه معکوس سادگی و دقت، دست و پا گیر بودن توصیفات ساختارهای زبانی است. معروف ترین پیاده سازی - Turbo / Borland Pascal - با وجود تفاوت هایی که با استاندارد پاسکال دارد، یک محیط و مجموعه ای از کتابخانه ها است که یک سیستم صنعتی برای توسعه برنامه ها در محیط MS-DOS از یک زبان آموزشی ساخته اند.

    C و C++زبان C بر اساس الزامات یک برنامه نویس سیستم است: دسترسی کامل و کارآمد به تمام منابع کامپیوتری، ابزارهای برنامه نویسی سطح بالا، قابلیت حمل برنامه ها بین سیستم عامل ها و سیستم عامل های مختلف. C++ ضمن حفظ سازگاری با C، امکانات برنامه نویسی شی گرا را معرفی می کند و ایده کلاس (شیء) را به عنوان یک نوع تعریف شده توسط کاربر بیان می کند. به لطف این ویژگی ها، C / C ++ موقعیت یک زبان جهانی را برای هر کاری در اختیار گرفته است. اما استفاده از آن در مواردی که لازم است در کوتاه ترین زمان ممکن نتیجه آماده استفاده شود، یا جایی که خود رویکرد رویه ای بی سود می شود، می تواند ناکارآمد شود.

    دلفی- این جانشین Borland Pascal / Borland C نیست، طاقچه آن - یعنی. توسعه سریع برنامه (Rapid Application Developing, RAD). چنین ابزارهایی به شما این امکان را می دهد که بدون اتلاف تلاش زیاد در موارد جزئی، یک برنامه کاری از اجزای آماده در کوتاه ترین زمان ممکن ایجاد کنید. جایگاه ویژه ای در این گونه سیستم ها امکان کار با پایگاه های داده است.

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

    پیش درآمد- یک زبان برنامه نویسی اعلامی سطح بالا که برای توسعه سیستم ها و برنامه های هوش مصنوعی طراحی شده است. این زبان به دسته زبان های نسل پنجم تعلق دارد. این زبان در سال 1971 در دانشگاه مارسی (فرانسه) توسعه یافت و یکی از زبان های پرکاربرد و دائما در حال توسعه است. آخرین نسخه آن Prolog 6.0 است

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

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

    ALGOL- یک زبان برنامه نویسی سطح بالا با تمرکز بر توصیف الگوریتم های حل مسائل محاسباتی. در سال 1958 توسط متخصصان کشورهای اروپای غربی برای تحقیقات علمی ایجاد شد. نسخه Algol-60 این زبان توسط کنفرانس بین المللی پاریس (1960) پذیرفته شد و به طور گسترده در رایانه های نسل دوم استفاده شد. نسخه Algol-68 که توسط گروهی از متخصصان فدراسیون بین المللی پردازش اطلاعات (IFIP) در سال 1968 توسعه یافت، وضعیت یک زبان برنامه نویسی جهانی بین المللی را دریافت کرد که بر حل مشکلات نه تنها محاسباتی، بلکه همچنین اطلاعاتی متمرکز بود. اگرچه امروزه الگول به ندرت مورد استفاده قرار می گیرد، اما به عنوان پایه و یا تأثیر قابل توجهی در توسعه زبان های مدرن تر، به عنوان مثال، آدا، پاسکال و غیره بوده است.

    بهترین زبان وجود ندارد. اگر می خواهید در نوشتن برنامه ها حرفه ای شوید، باید یکی از زبان های برنامه نویسی سطح بالا (C++ محبوب ترین زبان برنامه نویسی است) و همچنین یکی از زبان های برنامه نویسی پایگاه داده را یاد بگیرید ( مانند SQL). وقتی زبان برنامه نویسی C++ را یاد گرفتید، نمی توانید اشتباه کنید. با دانستن این زبان، همیشه می توانید در هر شرکت برنامه نویسی شغلی پیدا کنید.
    با وجود محبوبیت زیاد زبان برنامه نویسی C++، اغلب از زبان های دیگر استفاده می شود. بسیاری از کامپیوترهای قدیمی هنوز برنامه هایی را اجرا می کنند که به زبان برنامه نویسی COBOL نوشته شده اند. بنابراین ما به برنامه نویسانی نیاز داریم که بتوانند این برنامه ها را بهبود بخشند و برنامه های جدید بنویسند. اغلب اوقات، شرکت های بزرگ حقوق بالایی به چنین برنامه نویسانی می پردازند.
    اگر قرار است به تنهایی کار کنید، بهتر است یاد بگیرید که چگونه برنامه های پایگاه داده خود را بنویسید. برای این کار باید زبان های برنامه نویسی مانند SQL یا VBA را یاد بگیرید که در برنامه مایکروسافت اکسس استفاده می شود. برای ایجاد صفحات وب، باید HTML و همچنین دانش کمی از جاوا، جاوا اسکریپت، VBScript و سایر زبان های برنامه نویسی اینترنت را بدانید. ضروری ترین زبان برنامه نویسی است که به شما امکان می دهد وظایف محول شده را به راحتی و به سرعت حل کنید. این می تواند C++، BASIC، جاوا، SQL یا زبان اسمبلی باشد.

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

    برای شما در برنامه نویسی آرزوی موفقیت دارم!