نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • برنامه ها
  • سطوح زبان های برنامه نویسی زبان های برنامه نویسی سطح بالا و پایین: کدام یک را باید یاد بگیرید

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

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

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

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

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

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

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

انواع داده ها

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

سیستم خاصی که به وسیله آن داده ها در برنامه سازماندهی می شوند نوع سیستمزبان برنامه نویسی؛ توسعه و مطالعه سیستم های نوع به عنوان نظریه نوع شناخته می شود. زبان ها را می توان به عنوان سیستم طبقه بندی کرد به صورت استاتیک تایپ شده استو زبان ها با تایپ پویا.

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

ساختارهای داده

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

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

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

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

گسترده ترین گونه های سه مورد زیر عبارتند از: عملیاتی، اشتقاقی (اصلی) و معنایی (ریاضی).

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

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

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

علیرغم این واقعیت که بیشتر زبان ها بر روی مدل محاسباتی ضروری مشخص شده توسط معماری کامپیوتر فون نویمان تمرکز دارند، رویکردهای دیگری نیز وجود دارد. می توان به زبان هایی با مدل محاسباتی انباشته (فورت، فاکتور، پست اسکریپت و غیره) و همچنین برنامه نویسی تابعی (Lisp، Haskell و غیره) و منطقی (Prolog) و زبان REFAL بر اساس محاسبات اشاره کرد. مدل ارائه شده توسط ریاضیدان شوروی A A. Markov Jr.

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

راه های پیاده سازی زبان ها

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

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

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

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

شما می توانید برای هر زبان تفسیر شده یک کامپایلر ایجاد کنید - برای مثال، یک زبان Lisp تفسیر شده بومی را می توان بدون هیچ محدودیتی کامپایل کرد. کد ایجاد شده در زمان اجرا نیز می تواند به صورت پویا در زمان اجرا کامپایل شود.

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

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

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

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

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

زبان های برنامه نویسی مدرن برای استفاده از ASCII، یعنی در دسترس بودن همه، طراحی شده اند گرافیکیکاراکترهای ASCII شرط لازم و کافی برای ضبط هر ساختار زبانی است. مدیراننویسه‌های ASCII به میزان محدودی استفاده می‌شوند: فقط CR بازگشتی کالسکه، LF تغذیه خط، و زبانه افقی HT (گاهی اوقات زبانه عمودی VT و صفحه خوراک FF) مجاز هستند.

زبان‌های اولیه، که به دوران کاراکترهای 6 بیتی بازمی‌گردد، از مجموعه محدودتری استفاده می‌کردند. به عنوان مثال، الفبای فرترن شامل 49 کاراکتر (شامل فاصله): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / (). , $ ":

یک استثنای قابل توجه زبان APL است که از کاراکترهای ویژه زیادی استفاده می کند.

استفاده از کاراکترهای غیرASCII (مانند کاراکترهای KOI8-R یا نویسه‌های یونیکد) وابسته به پیاده‌سازی است: گاهی اوقات آنها فقط در نظرات و ثابت‌های کاراکتر / رشته مجاز هستند و گاهی اوقات فقط در شناسه‌ها مجاز هستند. در اتحاد جماهیر شوروی، زبان هایی وجود داشت که در آن همه کلمات کلیدی با حروف روسی نوشته می شد، اما چنین زبان هایی محبوبیت زیادی به دست نیاوردند (به استثنای زبان برنامه نویسی جاسازی شده 1C: Enterprise).

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

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

را نیز ببینید

یادداشت ها (ویرایش)

ادبیات

  • هال آبلسون، جرالد جی ساسمن. ساختار و تفسیر برنامه های کامپیوتری
  • رابرت دبلیو سبستا.مفاهیم پایه زبان های برنامه نویسی = مفاهیم زبان های برنامه نویسی / Per. از انگلیسی - ویرایش پنجم - M .: Williams, 2001 .-- 672 p. - 5000 نسخه. - ISBN 5-8459-0192-8 (روسی)، ISBN 0-201-75295-6 (انگلیسی)
  • Wolfenhagen V.E.ساخت زبان های برنامه نویسی روش های توصیف - M .: Center YurInfoR, 2001 .-- 276 p. - شابک 5-89158-079-9
  • پارونژانوف V.D.چگونه می توان کار ذهن را بهبود بخشید. الگوریتم های بدون برنامه نویس - بسیار آسان است! - م .: دلو، 2001 .-- 360 ص. - شابک 5-7749-0211-0
  • F. Biancuzzi, C. Warden.پیشگامان برنامه نویسی گفتگو با سازندگان محبوب ترین زبان های برنامه نویسی. - SPb. : Symbol-Plus, 2010 .-- 608 p. - شابک 978-5-93286-170-7

پیوندها

  • فهرست زبان (انگلیسی) - بیش از 2500 زبان با توضیحات کوتاه
  • Computer Languages ​​History (انگلیسی) - تاریخچه زبان های برنامه نویسی (از 1954 تا مه 2004) (شامل یک نمودار به روز شده به طور منظم)
  • مثال ها - نمونه های برنامه نویسی به 162 زبان
  • محبوبیت زبان برنامه نویسی - مطالعه 2004 در مورد محبوبیت زبان های برنامه نویسی
  • 10 زبان برنامه نویسی برای یادگیری (2006)
  • فهرست انجمن برنامه نویسی (انگلیسی) - رتبه بندی محبوبیت زبان های برنامه نویسی به طور مرتب به روز می شود
  • معیارهای ضربات زبان کامپیوتری - مقایسه زبان های برنامه نویسی بر اساس کارایی
  • زبان های برنامه نویسی که مورد علاقه هستند (انگلیسی) - مقایسه زبان های برنامه نویسی برای "عشق" و "نفرت" به آنها

بنیاد ویکی مدیا 2010.

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

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

زبان های برنامه نویسی موجود را می توان به دو گروه تقسیم کرد: رویه ای و غیر رویه ای (نگاه کنید به شکل 4.1).

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

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

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

برنج. 4.1. طبقه بندی کلی زبان های برنامه نویسی

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

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

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

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

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

همه مترجمان بر اساس یکی از دو اصل کار می کنند: تفسیر یا تالیف.

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

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

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

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

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

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

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

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



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

بیایید معروف ترین زبان های برنامه نویسی را مشخص کنیم.

1.فرترن(سیستم ترجمه فرمول - سیستم ترجمه فرمول)؛ قدیمی ترین زبان که تا به امروز به طور فعال در حل مسائل جهت گیری ریاضی استفاده می شود. یک زبان کلاسیک برای برنامه نویسی کامپیوتر مسائل ریاضی و مهندسی است

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

3.ALGOL(زبان الگوریتمی - زبان الگوریتمی); نقش زیادی در تئوری ایفا کرد، اما اکنون تقریباً هرگز برای برنامه نویسی عملی استفاده نمی شود.

4.PL / 1(PL / 1 زبان برنامه نویسی اولین زبان برنامه نویسی است). زبان چند منظوره؛ الان تقریبا استفاده نشده

5.پاسکال(پاسکال - به نام دانشمند بلز پاسکال)؛ هم هنگام یادگیری برنامه نویسی و هم در بین حرفه ای ها بسیار محبوب است. در اوایل دهه 70 توسط دانشمند سوئیسی نیکلاوس ویرث ایجاد شد. پاسکال در ابتدا به عنوان یک زبان آموزشی توسعه داده شد و در واقع، اکنون یکی از زبان های اصلی برای آموزش برنامه نویسی در مدارس و دانشگاه ها است. با این حال، کیفیت آن در مجموع آنقدر بالا بود که برنامه نویسان حرفه ای نیز با کمال میل از آن استفاده می کنند. فیلیپ کان، فرانسوی که سیستم توربو پاسکال را توسعه داد، به موفقیت های چشمگیر از جمله مالی دست یافت. جوهر ایده او ترکیب مراحل متوالی پردازش برنامه - کامپایل، ویرایش پیوندها، اشکال زدایی و تشخیص خطاها - در یک رابط واحد بود. نسخه‌های Turbo-Pascal تقریباً تمام مؤسسات آموزشی، مراکز برنامه‌نویسی و شرکت‌های خصوصی را تحت تأثیر قرار داده است. بر اساس زبان پاسکال، چندین زبان قدرتمندتر ایجاد شده است (Modula، Ada، Delphi).

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

7.ADA؛ زبان برنده (مه 1979) در مسابقه زبان جهانی پنتاگون از سال 1975 است. توسعه دهندگان گروهی از دانشمندان به رهبری ژان ایهبیا هستند. زبان برنده ADA به نام آگوستا آدا لاولیس نام گرفت. زبان ADA وارث مستقیم این زبان است
پاسکال این زبان برای ایجاد و نگهداری طولانی مدت (دراز مدت) سیستم های نرم افزاری بزرگ در نظر گرفته شده است، امکان پردازش موازی، کنترل فرآیند در زمان واقعی و موارد دیگر را فراهم می کند که دستیابی به آن با استفاده از زبان های ساده تر دشوار یا غیرممکن است.

8.سی(C - "si")؛ به طور گسترده در توسعه نرم افزار سیستم استفاده می شود. اثر بزرگی در برنامه نویسی مدرن بر جای گذاشته است (نسخه اول - 1972)، در بین توسعه دهندگان سیستم های نرم افزاری (از جمله سیستم عامل) بسیار محبوب است. C ویژگی‌های یک زبان سطح بالا و یک زبان ماشین‌گرا را ترکیب می‌کند و به برنامه‌نویس اجازه می‌دهد به تمام منابع ماشین دسترسی داشته باشد، که زبان‌هایی مانند Basic و Pascal این امکان را ندارند.

9.C ++(C ++)؛ یک پسوند شی گرا از زبان C، که توسط Bjarne Stroustrup در سال 1980 ایجاد شد. بسیاری از ویژگی های جدید قدرتمند که بهره وری برنامه نویس را به طور چشمگیری بهبود بخشیده اند، روی سطح پایین خاصی که از زبان C به ارث رسیده است، قرار گرفتند.

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

11.جاوا(جاوا)؛ زبان برنامه نویسی شی گرا مستقل پلت فرم، برای ایجاد صفحات وب تعاملی بسیار کارآمد است. این زبان توسط Sun در اوایل دهه 90 بر اساس C ++ ساخته شد. این طراحی شده است تا توسعه برنامه های کاربردی مبتنی بر C ++ را با حذف تمام ویژگی های سطح پایین از آن ساده کند.

12.لیسپ(Lisp) یک زبان برنامه نویسی کاربردی است. این بر روی ساختار داده در قالب یک لیست متمرکز شده است و به شما امکان می دهد پردازش کارآمد مقادیر زیادی از اطلاعات متنی را سازماندهی کنید.

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

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

1. HTML.یک زبان شناخته شده برای کاغذبازی. این بسیار ساده است و شامل دستورات اولیه برای قالب بندی متن، افزودن تصاویر، تنظیم فونت ها و رنگ ها، سازماندهی لینک ها و جداول است.

2. PERL.این به عنوان ابزاری برای پردازش کارآمد فایل های متنی بزرگ، تولید گزارش های متنی و مدیریت وظایف در نظر گرفته شد.
Perl بسیار قدرتمندتر از زبان هایی مانند C است. بسیاری از توابع رایج برای کار با رشته ها، آرایه ها، مدیریت پردازنده ها، کار با اطلاعات سیستم را معرفی می کند.

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

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

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

کنترل سوالات

1-سیستم های برنامه نویسی چیست و به چه کلاسی از برنامه ها تعلق دارند؟

2. چه چیزی در سیستم های برنامه نویسی گنجانده شده است؟

3. اولین برنامه ها با چه زبان برنامه نویسی ساخته شدند؟

4. زبان های رویه ای به چه زبان هایی تقسیم می شوند؟

5. زبان های سطح پایین را توصیف کنید.

6. کدام زبان یک زبان سطح پایین است؟

7. مزایای زبان های سطح پایین.

8. زبان های سطح بالا را توصیف کنید.

9. مزایای زبان های سطح بالا.

10. مثال هایی از زبان های سطح بالا بزنید.

11. مترجمان برای چیست؟

12. تفاوت بین کامپایلر و مفسر چیست؟

13. نقص در تفسیر (به عنوان نوعی مترجم).

14. فرآیند تدوین برنامه چگونه است؟

15. در حین تدوین چه اقداماتی انجام می شود؟

16. تفاوت ماژول بار و ماژول شی چیست؟

17. تفاوت برنامه نویسی رویه ای با برنامه ریزی غیر رویه ای چیست؟

18. چه نوع برنامه نویسی غیر رویه ای است
برنامه نويسي؟

19. ویژگی زبان های اعلانی.

20. زبان های برنامه نویسی را به طور خلاصه شرح دهید: Fortran، BASIC، Pascal، Cobol.

21. زبان های برنامه نویسی را به طور مختصر توضیح دهید: Ada، C، C ++، Delphi، Java.

22. مثال هایی از زبان های شی گرا بزنید.

23. زبان Lisp به کدام دسته از زبانها تعلق دارد؟

24. زبان پرولوگ متعلق به چه کلاسی از زبان هاست؟

زالینا 13 ژانویه 2016 در 15:42

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C، C ++ و C #

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

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

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

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

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

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

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

جاوا اسکریپت

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

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

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

جاوا

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

پایتون

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

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

یاقوت سرخ

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

زبان پی اچ پی

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

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

نتیجه

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

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

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

اولین زبان ماشین در سال 1941 توسط Konrad Zuse که مخترع موتور تحلیلی است اختراع شد. کمی بعد، در سال 1943، هوارد آیکن ماشین Mark 1 را ایجاد کرد که قادر به خواندن دستورالعمل ها در سطح کد ماشین بود.

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

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

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

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

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

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

  • Basic در سال 1964 اختراع شد، متعلق به خانواده زبان های سطح بالا است و برای نوشتن برنامه های کاربردی استفاده می شود.
  • یادگیری Python ("Python") به لطف نحو ساده و خوانا نسبتاً آسان است، اما مزیت آن این است که می توان از آن برای ایجاد برنامه های دسکتاپ معمولی و برنامه های وب استفاده کرد.
  • پاسکال ("پاسکال") - یکی از قدیمی ترین زبان ها (1969) که برای آموزش دانش آموزان ایجاد شده است. اصلاحات مدرن آن به شدت تایپ و ساختار یافته است، اما پاسکال یک زبان کاملا منطقی است که در سطح شهودی قابل درک است.

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

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

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

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

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

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

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

لیست زیر از زبان های برنامه نویسی: C ("C")، C# ("C-sharp")، "Fortran"، "Pascal"، "Java" ("Java") - از جمله پر استفاده ترین نحو های سطح بالا هستند. این زبان دارای ویژگی های زیر است: این زبان ها با ساختارهای پیچیده کار می کنند، انواع داده های رشته ای و عملیات را با فایل های ورودی / خروجی اطلاعات پشتیبانی می کنند و همچنین به دلیل خوانایی و نحو واضح کار با آنها بسیار آسان تر است.

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

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

  • زبان های OOP: جاوا، سی ++، پایتون، پی اچ پی، ویژوال بیسیک و جاوا اسکریپت.
  • گروهی از زبان های ساختاری: Basic، Fortran و Pascal.
  • چند پارادایم: سی #، دلفی، کاری و اسکالا.

محدوده برنامه ها و کاربردها

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

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

مقالات مرتبط برتر