زبان برنامه نویسی و انواع آن

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

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

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

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

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

زبان تفسیر شده چیست؟

زبان برنامه نویسی به ما امکان می دهد همه این دستورالعمل ها را به زبانی که "مترجم" می تواند آن را درک کند ، بنویسیم. سپس مترجم آنها را به 0 و 1 تبدیل می کند که کامپیوتر می تواند آنها را درک کند و آنها را اجرا کند. از این توالی کامل دستورالعمل ها به عنوان "کد منبع" یاد می شود.


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

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

زبان تدوین شده چیست؟

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

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

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

زبان تفسیر شده در برابر زبان کامپایل شده: تفاوت ها چیست؟

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

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

عکس. 1. نمونه ای از کد ماشین و نمایش آن در مونتاژ

مترجمان به موارد زیر تقسیم می شوند:

    کامپایلرها - متن برنامه را به کد ماشین تبدیل کنید ، که می تواند ذخیره شود و سپس بدون کامپایلر استفاده شود (به عنوان مثال فایل های اجرایی با پسوند *. exe).

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

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

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

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

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

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

فواید

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

معایب

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

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

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

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

    زمان قابل توجه توسعه برای برنامه های بزرگ و پیچیده.

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

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

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

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

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

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

اولین زبان برنامه نویسی سطح بالا در نظر گرفته شده است زبان کامپیوتر Plankalkül ، توسط مهندس آلمانی Konrad Zuse در دوره 1942-1946 ساخته شده است. با این حال ، یک مترجم برای آن تا سال 2000 وجود نداشت. اولین مترجم زبان سطح بالا PP (برنامه برنامه نویسی) با نام مستعار PP-1 است که در سال 1954 با موفقیت آزمایش شد. مترجم PP-2 (1955 ، چهارم در جهان) مترجم) قبلاً در حال بهینه سازی بود و شامل لودر و اشکال زدا خود ، کتابخانه ای از روش های استاندارد بود و مترجم PP برای رایانه های Strela-4 قبلاً حاوی یک لینک دهنده از ماژول ها بود. با این حال ، استفاده گسترده از زبان های سطح بالا با ظهور Fortran و ایجاد یک کامپایلر برای این زبان (1957) آغاز شد.

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

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

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

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

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

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

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

اکنون می توانیم با خوشحالی مقادیری را به آن اختصاص دهیم. عملگر: \u003d این دو مرحله را می توان به یكی فشرده كرد - با توجه به نوع برگشتی عبارت ، نوع متغیر به سمت راست عملگر استنباط می شود ، آن را "اعلام" می كند و مقدار عبارت ارزیابی شده را به آن اختصاص می دهد. با این حال ، اکنون یک متغیر در حال ایجاد است ، بنابراین هر تخصیص اضافی قبلاً توسط عملگر \u003d ارائه شده است.

مثال ها: C، C ++، C #، Java، Python، PHP، Ruby، Perl، Pascal، Delphi، Lisp... زبان های سطح بالا توانایی کار با ساختارهای پیچیده داده را دارند. اکثر آنها از پشتیبانی از انواع رشته ها ، اشیا، ، عملیات I / O پرونده و غیره پشتیبانی می کنند. عیب زبان های سطح بالا این است که برنامه ها از برنامه های موجود در زبان های سطح پایین بزرگتر هستند. بنابراین ، زبانهای سطح بالا عمدتا برای توسعه نرم افزار رایانه ها و دستگاههایی که مقدار زیادی حافظه دارند استفاده می شود. و زیرگروههای مختلف اسمبلر برای برنامه نویسی دستگاههای دیگر ، که اندازه برنامه در آنها بسیار مهم است ، استفاده می شود.

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

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

زبانهای اجباری مبتنی بر چندین ایده مهم هستند ، از جمله بازنمایی اعمال در قالب فرمولهای ریاضی ، مفهوم نوع داده و قضیه تحول ساختاری.

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

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

یک مثال ساده تابعی است که سینوس یک عدد را محاسبه می کند. می توان آن را sin نامید ، داده های اولیه آن متشکل از یک عدد واقعی است ، نتیجه همچنین یک عدد واقعی است که با جمع کردن بخشی از یک سری بی نهایت شناخته شده (یا اجرای دستور fsin یک پردازنده پردازنده ریاضی) بدست می آید.

مجموعه اعمالی که می توانند در داخل یک تابع انجام شوند بسیار محدود است. این شامل محاسبه عبارات فرمول ، فراخوانی توابع دیگر است (که یک عمل جداگانه نیست - فراخوانی عملکرد اغلب در یک عبارت گنجانده می شود) ، انتصابات ، انشعاب (گروهی از اقدامات که فقط در صورت صحیح بودن شرایط خاص اجرا می شود) و حلقه ها (گروهی از اقدامات که چندین بار انجام می شود ، تعداد تکرارها به برخی از شرایط بستگی دارد). اقدامات را می توان درون یکدیگر قرار داد. ممکن است به نظر برسد که مجموعه شاخه ها و حلقه ها خیلی کوچک است ، اما اینطور نیست. ثابت شده است که هر الگوریتمی متشکل از بلوک های عملکردی (در سطح پایین - دستورات حسابی و دستورات انتقال داده) ، انتقال های شرطی و غیرشرطی را می توان به الگوریتمی معادل فقط از بلوک های مشروط ساختاریافته تبدیل کرد - بلوک های تابعی ، شاخه ها و حلقه های دارای پایان. این بیانیه در مقاله توسط Corrado Bohm و Giuseppe Jacopini "نمودارهای جریان ، ماشین آلات پرکننده و زبانهایی که فقط دارای دو قانون تشکیل هستند" در فرمول بندی قرار گرفت (ارتباطات ACM ، جلد 9 / شماره 5 / مه ، 1965).

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

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

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

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

    اعداد واقعی؛

    نمادها - حروف ، اعداد ، نشانه های عملیات حسابی و غیره.

    رشته های شخصیت

    مقادیر بولی

    اشاره گرها

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

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

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

در بعضی از زبانها (به عنوان مثال ، در C ++) می توان عملگرهایی را برای انواع ایجاد شده تعریف کرد ، که استفاده از متغیرهای این نوع را به همان شیوه متغیرهای نوع از پیش تعریف شده امکان پذیر می کند.

روش های دیگری برای ایجاد انواع جدید وجود دارد. به عنوان مثال ، در Pascal می توان موارد زیر را ایجاد کرد:

    انواع دامنه (با تعیین طیف وسیعی از مقادیر) ؛

    انواع شمارش (با برشمردن مقادیر ممکن)

    انواع را تنظیم کنید

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

بر این اساس ، این زبان اصلی در یونیکس بود - یک سیستم عامل که در آن زمان حتی از محبوبیت بیشتری نسبت به اکنون برخوردار بود. و در حدود دهه 80 اوضاع چیزی شبیه به این بود (مدرس به زبانهای Basic ، C و سایر زبانهای ذکر شده نشان می دهد). بیایید بگوییم که همه اینها قبلاً در حیله گری مرده است (مدرس ارجاعات به Assembler ، Fortran و Algol را پاک می کند) ... و در دهه 80 ، رایانه ها کوچکتر ، باهوش تر ، ارزان تر شدند و مردم انواع و اقسام عجیب ها را می خواستند تا حتی بهتر زندگی کنند ، زندگی کنند حتی سرگرم کننده تر

زبانهای بومی دهه 80

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

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

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

زبان های نوشتاری دهه 90 میلادی

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

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

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

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

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

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

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

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

زبان های تدوین شده از دهه 90

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

برنامه ریزی برای ارتش ، هوا فضا

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

چگونه یک برنامه نویس به دنبال کار می گردد

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

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

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

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

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

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

به طور خلاصه ، چه می توانید بگویید؟ کدام زبان ها خوب و کدام ها بد هستند؟ خوب ، در گروهی از زبانها ، مثلاً بین Ruby ، \u200b\u200bPython و PHP ، کدام یک را انتخاب کنید؟ البته ، پاسخ صحیح پایتون است ، اما در واقع تفاوت بین آنها در تعداد اشکالات مجاز است ، به مقدار چیز دیگری - 5، ، خوب ، شاید 10. یعنی اگر شما قبلاً یک پروژه تمام شده در PHP نوشته اید ، پس هیچ کس در ذهن او نمی گوید: "بیایید همه چیز را در پایتون دوباره بنویسیم." آنها خواهند گفت ، "بیایید توسعه دهندگان PHP بیشتری استخدام کنیم و به نوشتن در PHP ادامه دهیم." عالی است ، این انتخاب بدی نیست. واضح است که اگر ناگهان شروع به نوشتن یک پروژه کنید ، ممکن است عاقلانه باشد که اکنون پایتون را انتخاب کنید. اگرچه ، این نیز بستگی دارد. شاید شما یک سری توسعه دهندگان ارزان قیمت PHP در بازار داشته باشید ، اما محصولات Python گران هستند و شما فکر می کنید: "بله ، فن آوری خنک تر است ، اما من در هزینه توسعه دهندگان آماده صرفه جویی می کنم." و این همه ، عالی است ، شما قبلاً آمده اید و آنجا کار می کنید.
چگونه می توان بین جاوا و C ++ یکی را انتخاب کرد؟ بله ، همان اتفاق می افتد. من فکر می کنم تا زمانی که تصمیم بگیرید یک پروژه بزرگ جدید را به چه زبانی شروع کنید ، در زمینه حرفه ای خود دانش کسب خواهید کرد و می توانید انتخاب درستی داشته باشید. در حال حاضر ، شما مجبور نیستید که آن انتخاب را انجام دهید ، و بنابراین من به شما توصیه می کنم آنچه را دوست دارید انجام دهید.

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