یکی از اولین مشکلاتی که بسیار مهم به نظر می رسد: "کدام زبان را برای آموزش برنامه نویسی انتخاب کنید؟"

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

برای آموزش اصول برنامه نویسی ، باید زبانهایی را انتخاب کنید که برای این کار مناسب باشند ، یعنی برای شروع کار به اندازه کافی ساده خواهد بود ، فرصت های غنی خواهید داشت ، به شما امکان می دهد شروع کنید نتیجه سریع... برای یادگیری برنامه نویسی ، من می توانم چندین گزینه را توصیه کنم: VBA ، Python ، JavaScript ، Pascal ABC.

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

VBA \u003d ویژوال بیسیک برای برنامه یک زبان کلان است که در آن گنجانده شده است Microsoft Office و برخی برنامه های دیگر. استفاده از اکسل بسیار راحت است. Alt + F11 را فشار دهید و ... بروید! اگر از قبل MS Office دارید ، لازم نیست چیزی نصب کنید - برای شروع همه چیز در حال حاضر است. VBA یک زبان جدی و بالغ است که به طور گسترده ای برای اتوماسیون کار در اکسل و سایر برنامه ها استفاده می شود. مزیت اصلی: سریعترین نتیجه! شما حتی در مرحله یادگیری قادر خواهید بود کار مفیدی انجام دهید!

پایتون یک زبان برنامه نویسی است. ویژگی مشخصه آن این است که توسط یک نفر ایجاد شده است. زبان به قدری زیبا و زیبا است که در آن صورت کار با "زبانهای کلاسیک برای یادگیری" (C ++ ، Pascal / Delphi) دشوار است ، به نظر می رسد آنها غیرمستقیم و ناخوشایند هستند. Python برای برنامه نویسی وب و نوشتن قطعه کد برای بازی ها استفاده می شود. Python در همان مناطق PHP ، Perl ، Ruby و غیره استفاده می شود. مزیت اصلی: ظرافت و امکانات غنی برای همه سطوح برنامه نویسان.

جاوا اسکریپت - زبانی که برای زنده کردن صفحات وب استفاده می شود. در مرورگر اجرا می شود ، یعنی در سمت مشتری. در سمت سرور ، زبان های اسکریپت نویسی (PHP ، Ruby ، \u200b\u200bPython ، ...) کار می کنند ، آنها یک صفحه وب تشکیل می دهند. پس از بارگیری در مرورگر ، دو ابزار مسئول عناصر پویا هستند - JavaScript و Flash. مزیت اصلی: هنگام ایجاد سایت می توان از آن استفاده کرد. UPD: JS + HTML5 می تواند برای نوشتن برنامه های کاربردی برای تلفن های هوشمند (همه سیستم عامل ها) استفاده شود ، گوگل کروم و Vkontakte.

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

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

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

در مدرسه ما ، در مرحله اول آموزش ، VBA (اگر قبلاً Microsoft Office را در رایانه خود داشته باشید) یا Python (اگر خانم Office ندارید یا دارید) استفاده می شود. رایانه لینوکس) یک بار دیگر تکرار می کنم: این زبان مهم نیست ، بلکه وظایفی است که شما در آن حل می کنید.

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

جزئیات این جلسه را می توانید در نظرات این پست بیابید ، اما در حال حاضر ، بیایید سعی کنیم در اینجا بفهمیم: پس کدام زبان را ابتدا یاد بگیریم؟

مدرسه قدیمی

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

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

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

مدرسه مدرن

همانطور که احتمالاً می دانید ، بسیاری از دانش آموزان مدرن برنامه خود را با برخی نسخه های ساده شده از زبان های "بزرگ" مانند Scratch ، Blockly یا Logo آغاز می کنند. به طور کلی ، می توان مزایا را از زبان رویه ای بازنویسی کرد ، اگر نه برای یک "اما": این زبان ها و برنامه های ساخته شده بر اساس آنها یک سرویس سرگرمی برای کودکان است.

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

سریع با دیدگاه شروع کنید

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

اگر وب را به عنوان تماس خود در نظر می گیرید ، باید سفر خود را بصورت استاندارد با HTML و CSS آغاز کنید. به شما این امکان را می دهد که صفحات ایستا ایجاد کنید و تصور تقریبی از آنچه باید با آن کنار بیایید داشته باشید. در مرحله بعدی ، بسیار جدی توصیه می شود که با پایتون مقابله کنید. اول ، زیرا یادگیری این زبان واقعاً آسان است. ثانیا ، طبق برخی منابع ، اگر فقط آمار دانش آموزان از سال 2011 را در نظر بگیریم ، پایتون محبوب ترین زبان است. ثالثاً ، قابلیت های این زبان به گونه ای است که امروز شما وب را با آن ایجاد می کنید (مانند DropBox یا Google) ، و فردا شروع به توسعه یک بازی (Civilization IV) می کنید.


یادگیری سخت است ، مبارزه با آن آسان است

بدون ترک موضوع وب ، می توانید JavaScript را به عنوان اولین زبان (در واقع سومین زبان پس از HTML و CSS) برنامه نویسی انتخاب کنید. این دقیقاً همان کاری است که آنها در درس های علوم کامپیوتر 15 سال پیش انجام دادند و این معنی کاملاً مشخصی داشت: صفحات ایستا با افزودن 4 تا 5 سطر به معنای واقعی یک جز an فعال دارند که انگیزه کار در این مسیر را افزایش می دهد. در این حالت ، عملکرد به مرورگر یا سیستم عامل بستگی ندارد. و این به ذکر چشم انداز توسعه بیشتر به سمت Node.js.

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

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

برنامه درس شماره 1

تاریخ _____________

تخصصسیستم های اطلاعاتی (توسط صنعت ) گروه IS-21

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

موضوع درسمقدمه. انواع طبقه بندی و هدف از زبان های برنامه نویسی.

اهداف درس:

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

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

نوع درسدرس نظری

شیوه های آموزشاستفاده کلامی از ICT

تجهیزات و مواد فنی درس:سخنرانی ، کامپیوتر ، کتاب الکترونیکی

در طول کلاسها

    لحظه سازمانی -2 دقیقه

    تعیین هدف از درس برای دانشجویان 1 دقیقه

    آزمون دانش و مهارت -20 دقیقه

    ارائه مطالب جدید -31 دقیقه

    تلفیق ماده مورد مطالعه -20 دقیقه

    تکالیف -3 دقیقه

    جمع بندی نتایج درس - 3 دقیقه

سوالات ارائه مطالب جدید:

مقدمه

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

  2. نسلهای زبان

  3. زبانهای مستقل از ماشین

    زبانهای جهانی

تلفیق مواد مورد مطالعه

  1. زبانهای جهانی چیست؟

خلاصه درس

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

مشق شب.... انواع طبقه بندی و هدف از زبان های برنامه نویسی

عملکردی - بر اساس هدف ، توابع انجام شده (توصیفی ، منطقی ، ریاضی) ؛

سطح زبان - یعنی سطح تعمیم در عملگرهای کلمات زبان (کم ، متوسط \u200b\u200b، زیاد ...) ؛

برنامه ها - یعنی جایی که زبان اعمال می شود (سیستم ، شبکه ، جاسازی شده و غیره)

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

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

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

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

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

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

مرحله 3. "کدگذاری"- (از زبان عامیانه سنتی آمریکایی "برنامه نویسی") - نوشتن متن برنامه به زبان برنامه نویسی متنی اساسی که برای مترجم قابل فهم باشد - برنامه ای که متن را به کد باینری تبدیل می کند.

مرحله 4. پخش- ترجمه برنامه به یک کد دودویی "شی" ، بدون نیاز به دخالت انسان ، بدون احتساب روند اشکال زدایی ، توسط مترجم تولید شده است.

مرحله 5. ماژول اجرایی برنامه را بسازید- اتصال اتوماتیک تمام ماژول های شی object لازم برای دستیابی به یک برنامه کاری است - دنباله ای از دستورات از پردازنده رایانه ای که الگوریتم تصور شده بر روی آن به صورت کد باینری قابل درک برای پردازنده اجرا می شود.

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

نسلهای زبان (نسلهای زبان)

نسل 1GL. زبانهای ماشین ، زبانهای سطح پایین- زبانهای پردازنده باینری ، که مجموعه ای (الفبا) از دستورالعملهای نوشته شده با کد باینری (0/1) هستند ، که پردازنده داده شده اگر این دستورات به صورت توالی در حافظه آن وارد شوند یا بلافاصله به واحد منطقی پردازنده ارسال شوند ، می توانند مستقیماً اجرا شوند. مثالها: زبان پردازنده IBM-PC ، زبان پردازنده ARM.

نسل 2GL. مونتاژ کننده ها ، کد های خودکار ، زبانهای سیستم، زبانهای سطح متوسط- زبان متنی که برای انسان قابل درک باشد و به زبانهای سطح پایین ، یعنی کد باینری ماشین ، قابل ترجمه و ترجمه (منحصر به فرد) باشد. برنامه نویسی در 2GL مرتبه ای بالاتر از برنامه نویسی در 1GL است ، زیرا برای درک انسان راحت تر است. مثالها: Macrosampler، C، PL / 1.

نسل 3GL. زبان ها سطح بالا - زبانهای متنی ، از نظر واژگان و نحو نزدیک به زبان انسان (معمولاً انگلیسی اغراق آمیز ، Pindos) ، به شما این امکان را می دهد که ساخت برنامه ها را به شکلی مناسب برای تفکر انسان و مشابه متن معمولی بنویسید - خلاصه داستان ، متن. برنامه نویسی در 3GL مرتبه ای بالاتر از 2GL است ، زیرا برای درک انسان راحت تر است و مرتبه ای کوتاه تر از زبان اسمبلی است. مثالها: BASIC ، FORTRAN ، PHP و تقریباً همه زبانهای شبکه.

نسل 4GL. زبان های برنامه نویسی بصری- زبانهای نمودار بلوک که به شما امکان می دهد الگوریتم ها را در پروژه های نرم افزاری نمایش دهید ، که ایجاد و تجزیه و تحلیل الگوریتم ها را تسهیل می کند. برنامه نویسی 4GL بسیار کارآمدتر از برنامه نویسی 3GL است. مثالها: سیستمهای RAD ، بستههای CAD ، سیستمهای OLAP.

نسل 5GL. زبان های برنامه نویسی هوشمند- به شما امکان می دهد عملکرد ایجاد الگوریتم ها را به رایانه منتقل کنید و فقط فرمول بندی مسئله را به شخص بسپارید برنامه نویسی 5GL مرتبه ای بالاتر از 4GL است. مثالها: سیستم MatCAD ، سیستمهای خبره.

در برنامه نویسی سیستم ، زبانهای 2GL بهترین نتیجه را می دهند ، زیرا در این زمینه سرعت اجرا و فشردگی کد مهم است. برای پردازش کلمات و کارهای شبکه ، زبانهای 3GL بهینه هستند.

به طور مستقیم با سلسله مراتب نسلهای زبان در ارتباط است به اصطلاح "استاندارد" است مدل OSI"، توصیف 7 سطح از سلسله مراتب پروتکل ها (زبان ها) برای تبادل اطلاعات شبکه ، که در زیر بحث شده است.

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

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

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

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

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

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

زبانهای ماشین گرا

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

    کیفیت بالای برنامه های ایجاد شده (فشردگی و سرعت اجرا) ؛

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

    قابل پیش بینی بودن کد شی و سفارشات حافظه ؛

    برای ساختن برنامه های موثر ، دانستن سیستم فرمان و ویژگی های عملکرد این رایانه ضروری است.

    پر زحمت فرآیند تدوین برنامه ها (به ویژه در زبان های ماشین و YASK) ، که از خطاها محافظت نمی کند.

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

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

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

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

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

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

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

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

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

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

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

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

Fortran ، Algol - زبانهای ایجاد شده برای حل مسائل ریاضی ؛

سیمولا ، عامیانه - برای مدل سازی ؛

لیسپ ، اسنوبول - برای کار با ساختارهای لیست

زبانهای جهانیزبانهای جهانیبرای طیف وسیعی از وظایف ایجاد شده اند: تجاری ، علمی ، مدل سازی و غیره اولین زبان جهانی توسعه یافت که در توالی زبانها قرار گرفتPl / 1... دومین زبان جهانی قدرتمند نامیده می شودALGOL-68... این امکان را به شما می دهد که با کاراکترها ، رقم ها ، اعداد ثابت و شناور کار کنید.Pl / 1دارای یک سیستم توسعه یافته اپراتورها برای مدیریت قالب ها ، کار با زمینه هایی با طول متغیر ، با داده های سازمان یافته در ساختارهای پیچیده و برای استفاده کارآمد از کانال های ارتباطی است. این زبان قابلیت های وقفه را در بسیاری از ماشین ها در نظر می گیرد و عملگرهای مناسبی دارد. امکان اجرای موازی بخشهای برنامه فراهم شده است. این زبان از خصوصیات زیادی استفاده می کندFortran ، Algola ، Kobola... با این حال ، این نه تنها امکان تخصیص حافظه پویا ، بلکه مدیریت شده و آماری را نیز فراهم می کند.

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

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

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

زبانهای غیر رویه ای گروهی از زبانها را تشکیل می دهد که سازماندهی داده های پردازش شده توسط الگوریتم های ثابت (زبانهای جدولی و تولیدکنندگان گزارش) و زبانهای ارتباطی با سیستم های عامل.

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

مسائل لنگر انداختن

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

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

  3. چه نسلی از زبان ها وجود دارد؟

  4. چه طبقه بندی های کاربردی زبان های برنامه نویسی وجود دارد؟

  5. زبان های ماشین گرا چیست؟

  6. زبانهای مستقل از ماشین را نام ببرید

    زبانهای جهانی چیست؟

موضوع №4 زبان برنامه نویسی: تکامل ، طبقه بندی

(OL Golitsina، II Popov "اصول الگوریتم سازی و برنامه نویسی" ص 38-45)

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

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

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

نسل YP

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

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

سوم نسل PL با ظهور اولین زبان سطح بالا در سال 1956 آغاز می شود - Fortran ، تحت رهبری J. Backus در IBM. در مدت کوتاهی Fortran به زبان اصلی برای حل مشکلات مهندسی و علمی تبدیل شده است. در ابتدا ، Fortran ابزار بسیار محدودی برای مدیریت اطلاعات شخصیت و I / O داشت. با این حال ، توسعه مداوم زبان ، آن را به یکی از گسترده ترین YED در رایانه های همه کلاسها - از ریز تا ابر رایانه ها تبدیل کرده است ، و نسخه های آن نیز برای محاسبه امکانات معماری موازی غیر سنتی استفاده می شود.

به زودی بعد از ظهور زبان Fortran ، زبانهایی که اکنون به طور گسترده ای شناخته شده اند مانند Algol ، Cobol ، Basis ، PL / 1 ، Pascal ، APL ، ADA ، C ، Forth ، Lisp ، Modula و ... در حال حاضر ، بیش از 2000 زبان سطح بالا مختلف وجود دارد.

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

روند دوم در توسعه PLS های نسل چهارم ، زبان های شی گرا بر اساس مفهوم یک شی program برنامه است که ابتدا در زبان Simula-67 مورد استفاده قرار گرفت و بعداً اساس زبان معروف Smalltalk را شکل داد. یک شی software نرم افزاری از ساختار داده ها و الگوریتم ها تشکیل شده است ، و هر شی object می داند چگونه بر روی داده های خود عملیات انجام دهد. در حقیقت ، اشیا different مختلف می توانند از الگوریتم های کاملاً متفاوتی در هنگام انجام اعمالی که با همان کلمه کلیدی تعریف شده اند (اصطلاحاً اصطلاح چند شکلگی) استفاده کنند. به عنوان مثال ، یک شی با اعداد و آرایه های پیچیده به عنوان داده ، از الگوریتم های مختلفی برای انجام عملیات ضرب استفاده خواهد کرد. شی گرا Pascal Basic ، C ++ ، Smalltalk ، Simula و تعدادی دیگر از زبان های برنامه نویسی از چنین خصوصیاتی برخوردار هستند.

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

و سرانجام ، چهارمین جهت توسعه ، زبانهای برنامه نویسی موازی (اصلاح Fortran IWU ، زبانهای Ossam ، SISAL ، FP و غیره) است که بر خلاف آن ، ایجاد نرم افزار برای ابزارهای محاسباتی معماری موازی (چند ماشین ، چند پردازنده و غیره) متمرکز شده است. از زبان های نسل سوم که به سمت معماری تک پردازنده سنتی گرایش دارند.

به شدت در حال توسعه است پنجم نسل شامل زبان های هوش مصنوعی ، سیستم های خبره ، پایگاه های دانش (InterLisp ، ExpertLisp ، IQLisp ، SIAL و غیره) و همچنین زبان های طبیعی است که نیازی به توسعه نحو خاصی ندارند (امروزه از زبان های طبیعی با قابلیت های محدود با موفقیت استفاده می شود - Clout ، پرسش و پاسخ ، HAL و غیره).

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

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

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

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

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

گروه بعدی زبان های برنامه نویسی سطح بالااینها زبانهایی هستند که توصیف وظیفه را به صورت تصویری و به آسانی قابل درک امکان پذیر می کنند. ویژگی بارز آنها گرایش آنها به سمت سیستم فرمان یک رایانه خاص نیست ، بلکه به سمت سیستم دستورالعملهای مشخص الگوریتمهای نوشتن یک کلاس خاص است. زبان های برنامه نویسی سطح بالا شامل BASIC ، Fortran ، Algol ، Pascal ، C و ... هستند.

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

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

عناصر زبان های برنامه نویسی را می توان در سطوح زیر در نظر گرفت:

alpha - مجموعه ای از نویسه ها است که در دستگاه های چاپ و صفحه نمایش نشان داده می شوند و / یا از صفحه کلید ترمینال وارد می شوند.

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

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

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

مترجمان

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

مترجم ها به سه نوع وجود دارد: مترجم ، گردآورنده و مونتاژگر.

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

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

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

شماره 1 روی نمودار بلوک کنترل نحوی متن برنامه را مشخص می کند ، شماره 2 - تولید کننده کد ماشین.


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

آخرین نوع مترجمین است جمع كننده هاآنها برای ترجمه یک برنامه نوشته شده به زبان اسمبلی (کد خودکار) به یک برنامه به زبان ماشین طراحی شده اند.

همه مترجمان ، صرف نظر از نوع آنها ، کارهای اصلی زیر را حل می کنند:

نحو برنامه ترجمه شده را تجزیه و تحلیل و بررسی کنید.

کد ماشین برنامه را ایجاد کنید.

برای برنامه خروجی حافظه اختصاص دهید.

امروز من پاسخی به نینا شومیلینا از Tver نوشتم ، به سوالی درباره پایتون به عنوان اولین زبان برنامه نویسی در مدرسه.

وی به نقل از کنستانتین پلیاکوف ، نتیجه مقاله وی در شماره سپتامبر انفورماتیک:
به همین دلایل ، نویسنده تمایل دارد از نظر I.A. Sukina: پایتون برای برنامه نویسان حرفه ای خوب است ، اما استفاده از آن به عنوان اولین زبان برنامه نویسی می تواند تصمیم بدی باشد. همانطور که معلمان پایتون اعتراف می کنند ، کسانی که برنامه نویسی در پایتون را آموخته اند تمایلی به انتقال به زبانهای دیگر (سطح پایین) ندارند. پس از آموزش دانش آموزان برای مرتب سازی آرایه ها با فراخوانی روش مرتب سازی ، دشوار است بعداً توضیح دهیم که چرا کل حجم ها در مورد الگوریتم های مرتب سازی نوشته شده اند. و این می تواند منجر به ظهور کهکشان "برنامه نویسان فقط پایتون" شود که برای بهبود کارایی برنامه آماده غلبه بر محدودیت های اضافی نیستند. در واقع ، معلم در موقعیتی قرار می گیرد که به خوبی با عبارت "پایتون چنین فرصت هایی دارد ، اما شما نمی توانید مانند آن تدریس کنید!" (E.V. Andreeva). در عین حال ، یادگیری پایتون به عنوان زبان برنامه نویسی دوم در کلاس های پیشرفته علوم کامپیوتر (به عنوان مثال بعد از پاسکال یا C) مفید خواهد بود.

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

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

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

به عنوان مثال ، EV Andreeva ، که گفته می شود توسط Polyakov نقل شده است ، سه سال پیش تصمیم گرفت سعی کند به دانش آموزان کلاس 6-7 در "Intellectual" در پایتون آموزش دهد. قبل از آن ، او نسبت به این ایده بدبین بود ، اما تصمیم گرفت سعی کند. شش ماه بعد ، او قبلاً در كنفرانس ها صحبت كرد و گفت كه بهتر است به دانش آموزان دبستان در پایتون آموزش داده شود ، كه او واقعاً به آن اعتقادی نداشت ، اما سپس آن را امتحان كرد و در عرض چند ماه دیدگاه های او تغییر كرد. بنابراین من نمی دانم که پلیاکف چه نقل قول می کرد و این نقل قدمت چند ساله است ، اما دیروز من به طور خاص این مکاتبات را به آندریوا نشان دادم و از او خواستم که پاسخ دهد ، که وی پاسخ "شومیلینا - دانش آموزان سطح متوسط \u200b\u200bرا قطعاً باید در پایتون آموزش دهند" نوشت.

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

a \u003d * 1000
نسبت به. تا
var a: آرایه عدد صحیح؛
...
برای i: \u003d 1 تا 1000 انجام دهید
a [i]: \u003d 0؛

نتیجه یک برنامه نویس یکسان است ، یک آرایه پر شده با صفر بدست می آید ، اما در پایتون به جای سه خط ، یک خط است و معنی تغییر نمی کند. و البته در اینجا بدگمانان خواهند گفت که شما نمی توانید مانند پایتون بنویسید ، که دانش آموز باید بفهمد که یک آرایه یک قطعه حافظه است ، ما باید آن را اعلام کنیم ، یعنی فضایی برای آن ذخیره کنیم ، که باید مقداردهی اولیه ، پر کردن آن با صفر ... خوب ، پاسخ ما به افراد مشکوک این است که معنی یک برنامه نویس تازه کار تغییر نمی کند ، برعکس ، خط a \u003d * 1000 بهتر آنچه را که دانشجو می خواهد بدست آورد نشان می دهد و بلافاصله (من یک لیست از یک عدد 0 می خواهم ، 1000 بار تکرار) ، نوشتن آن بسیار آسان تر است و به شما امکان می دهد مشکلات بیشتری را حل کنید!

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

بنابراین پایتون قطعاً برای مبتدیان بهتر است. علاوه بر این ، کودکان ضعیف می توانند در اینجا متوقف شوند ، پس از دریافت ایده ی کلی در مورد برنامه نویسی اما دانش آموزان قوی می توانند پیشرفت کنند و آنها یک زبان برنامه نویسی جهانی مدرن را در اختیار خواهند داشت که در واقع برای توسعه نرم افزار در شرکت های پیشرو جهان استفاده می شود. به عنوان مثال ، در اینجا آمار - "آنچه آنها در یاندکس می نویسند": http://blog.yandex.ru/post/ 77617 /. وب سایت ها را می توان در پایتون نوشت ، بازی های کامپیوتری، رابط کاربری گرافیکی ، برنامه های سرویس دهنده-کلاینت ، یعنی هرچه باشد.

اکنون در مورد این جمله که بسیاری از موارد سطح بالا در این زبان وجود دارد و استفاده از آنها به جای یادگیری نحوه کار آن وسوسه انگیز است. خوب ، این یک مشکل روشمند است ، یک مشکل زبان برنامه نویسی نیست. روش کلی روش در اینجا به شرح زیر است - ابتدا ما می فهمیم که چگونه کار می کند ، سپس اجازه استفاده از عنصر مربوط به زبان را داریم. به عنوان مثال ، ابتدا مبادله مقادیر دو متغیر را از طریق یک متغیر کمکی نوشتیم ، سپس من نشان می دهم که چگونه این کار با استفاده از tuples (a، b) \u003d (b، a) انجام می شود. ابتدا حداکثر دو یا سه عدد نوشتند ، سپس می توانید از تابع حداکثر استفاده کنید. سپس آنها برنامه ای برای یافتن حداکثر در نوشتند
توالی (آرایه) ، سپس می توانید از حداکثر عملکرد در لیست استفاده کنید. اول ، ما انواع را خودمان نوشتیم ، سپس می توانید از تابع مرتب سازی استفاده کنید ، و من حتی اصرار دارم که دانش آموزان از تابع مرتب سازی استاندارد استفاده کنند - این سریع تر و راحت تر است و به شما امکان می دهد مشکلات بیشتری را حل کنید ، اما فقط پس از اینکه یاد گرفتند چگونه خودشان مرتب سازی را بنویسند.

در واقع ، هر زبان برنامه نویسی مدرن (جاوا ، C ++ ، PHP) دارای مرتب سازی داخلی است ، زیرا اکنون پذیرفته شده است. این فقط در پاسکال کلاسیک وجود ندارد (اما در دلفی مدرن - وجود دارد) ، نه در BASIC های قدیمی (و در Visual Basic - وجود دارد) ، اما این بدان معنی نیست که همه این زبانها قابل استفاده نیستند ، زیرا آنها مرتب سازی داخلی دارند؟ و هرگز به ذهن هیچ کس خطور نمی کند که مطالعه این زبانها را در مدرسه منع کند فقط به این دلیل که "اگر معلم به کودکان آموزش دهد که از مرتب سازی داخلی استفاده کنند ، و سپس برای این کودکان توضیح نخواهید داد که چرا باید پیچیدگی الگوریتم های مرتب سازی را مطالعه کنید." بنابراین مسئله این نیست که زبان برنامه نویسی مرتب باشد یا نه ، بلکه مشکل نحوه استفاده از آن است. برای برخی از دانش آموزان کافی است توضیح دهند که "مرتب سازی انتخاب" چیست - نوشتن آن در همان پایتون قابل درک و بسیار آسان است ، اما با کسی می توانید الگوریتم های مرتب سازی کارآمد را مورد بحث قرار دهید ، و وجود مرتب سازی داخلی در این امر اختلال ایجاد نمی کند. علاوه بر این ، اگر من به کودکان و نوجوانان برنامه نویسی را با همان C ++ آموزش دهم ، بنابراین سعی می کنم به کودکان نحوه استفاده از مرتب سازی مرتب از STL را یاد بگیرم و از آن به طور م useثر استفاده کنم ، و این در یادگیری الگوریتم های مرتب سازی اختلال ایجاد نمی کند. در MIT (انستیتوی فناوری ماساچوست) ، همه دوره های اولیه برنامه نویسی چند سال پیش به پایتون ترجمه شد. در دانشکده جدید علوم رایانه در مدرسه عالی اقتصاد دولتی دانشگاه دولتی ، که در سال 2014 با مشارکت Yandex ایجاد شد ، این زبان پایتون است که اولین زبان برنامه نویسی است که توسط دانشجویان مورد مطالعه قرار می گیرد. در اینجا من دانشکده جدید را مثال می زنم ، زیرا در دانشگاه هایی که برنامه های از قبل تاسیس شده دارند ، تغییر دادن چیزی دشوارتر است ، به عنوان مثال ، در دانشکده CMC دانشگاه دولتی مسکو ، تلاش برای جایگزینی Pascal با C ، به عنوان اولین زبان برنامه نویسی ، به دلیل عدم تمایل به تغییر برنامه های موجود و تعداد معلمان ، ناموفق بود.

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

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

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