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

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

برای آموزش اصول برنامه نویسی ، باید زبانهایی را انتخاب کنید که برای این کار مناسب باشند ، یعنی برای شروع کار به اندازه کافی ساده خواهد بود ، فرصت های غنی دارید ، به شما امکان می دهد شروع کنید نتیجه سریع... برای یادگیری برنامه نویسی ، من می توانم چندین گزینه را توصیه کنم: 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 (اگر MS Office ندارید یا دارید) استفاده می شود. رایانه لینوکس) یک بار دیگر تکرار می کنم: این زبان مهم نیست ، بلکه وظایفی است که شما در آن حل می کنید.

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

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

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

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

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

نسل YP

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

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

سوم نسل YP با ظهور زبان اول در سال 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 در بین زبانهای جستجو به استاندارد تبدیل شده است.

و سرانجام ، چهارمین جهت توسعه ، زبانهای برنامه نویسی موازی (اصلاح IWU Fortran ، زبانهای 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 - تولید کننده کد ماشین.


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

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

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

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

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

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

نظرات در مورد اینکه زبان به چه زبان در مدرسه آموزش داده می شود متفاوت است: با این واقعیت که شما نیازی به یادگیری برنامه نویسی ندارید ، بلکه باید فقط مهارت کامپیوتر را بالا ببرید و برنامه های اداری (مانند غرب) ، تا جایی که شما نیاز به مطالعه سیستم عامل ها و چندین زبان برنامه نویسی در سطوح مختلف انتزاع و با پارادایم های مختلف دارید. این موارد شدید است ، اما یافتن حد متوسط \u200b\u200bآسان نیست. اول از همه ، ما باید یک هدف را تعریف کنیم. به دانش آموزان آموزش دهید که منطقی و الگوریتمی فکر کنند؟ کامپیوترها را در سطح خانوار معرفی کنید تا دانش آموزان از اینترنت استفاده کنند ، با ایمیل و ویراستاران متن؟ برای تعیین دانش اولیه مورد نیاز مهندسان ، ریاضیدانان ، فیزیکدانان و متخصصان آینده فناوری اطلاعات؟ یا شاید لازم باشد هر دانش آموز را با برنامه نویسی به عنوان یک پدیده آشنا کنیم ، به طوری که وی توانایی بالقوه را نشان می دهد سیستم های کامپیوتری؟ چند دانش آموز برنامه نویس می شوند؟ مقدار کمی. اما همه در زندگی از سینوس و معادلات Kirchhoff استفاده نمی کنند. البته یک م fundamentalلفه اساسی در علم برنامه نویسی وجود دارد ، اما تعریف آن آسان نیست. برخی از افراد تصور می كنند كه انتخاب كدام زبان برنامه نویسی چندان مهم نیست: در دروس علوم كامپیوتر ، شما نه به یك زبان برنامه نویسی ، بلكه به روش های برنامه نویسی و یك رویكرد سیستماتیک برای حل مشكلات نیاز دارید لازم است تفکر الگوریتمی توسعه داده شود و از طریق مثال با اصول ساخت سیستم های رایانه ای مدرن آشنا شوید.

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

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

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

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

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

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

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

تطبیق پذیری و انعطاف پذیری ، توانایی نوشتن برنامه های پیچیده به روشی کوتاه و زیبا. زبانهای Perl ، Ruby ، \u200b\u200bPython اکنون این ویژگی را دارند. البته باید توجه داشت که چنین جهانی بودن زبانها می تواند معایبی نیز داشته باشد ، زیرا غالباً منجر به پیچیدگی غیرضروری نحو می شود. به عنوان مثال ، پرل بسیار متنوع است ، آن را غنی از سازه های مختلف و چیزهای مشکل است که به شما امکان می دهد منطق پیچیده را خیلی کوتاه بنویسید ("کوتاه در مورد بسیاری از چیزها"). در نتیجه ، نوشتن برنامه هایی که خواندن آنها غیرممکن است ، بسیار آسان است. با این حال ، همین مورد در زبانهای C و C ++ نیز صدق می کند. زبانهای Ruby ، \u200b\u200bPython ، versatility با افت کمتری نسبت به Perl و C ++ داده می شوند.

وجود کتابخانه های استاندارد و در دسترس بودن ابزارهای ادغام پروژه ها با یکدیگر و با سایر سیستم ها و فناوری ها. امروزه ، تمام زبانهای دارای احترام به خود ابزاری را برای کار با پایگاه داده ، ایجاد رابط گرافیکی ، برای کار با آن فراهم می کنند پروتکل های شبکه و ایجاد برنامه هایی با معماری کلاینت سرور. امروزه یک رقابت مداوم بین زبان های برنامه نویسی اسکریپت نویسی مانند PHP ، Ruby ، \u200b\u200bPython ، Perl و ... وجود دارد که آنها چقدر ابزارهای ادغام با فن آوری های مختلف را توسعه داده اند. شخصی می داند که چگونه با OpenGL کار کند و کسی نمی داند.

امکان توسعه سیستم های سازگار زبان باید به گونه ای باشد که برنامه های نوشته شده در آن راکد و ناشیانه نباشند. این زبان باید امکان ایجاد تغییرات جزئی در کد را فراهم کند تا با پیچیدگی کار به طور پویا در حال تغییر و افزایش باشد. سنگ بنای سازگاری نرم افزار زبان ، مدولار بودن چند سطح قابل انعطاف است (مانند موارد زیر) زبانهای جاوا، Ruby ، \u200b\u200bPython ، Tcl) سادگی ابزارهای صادرات و واردات قابلیت ها (به معنای هدف با هدف اجازه دادن به پروژه ها برای به اشتراک گذاشتن کلاس ها ، اشیا and و توابع با یکدیگر) و ابزارهای پشتیبانی برای بازسازی: تغییرات انقلابی جهانی در عبور کد از ماژول ها و با هدف بهبود قابلیت خواندن کد و خلاص شدن از شر بارهای غیرضروری جمع شده در روند تکامل است.

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

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

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

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

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

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

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

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

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

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

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

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

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

الف) توضیحات باید برای همه گزینه های ممکن باشد) داده های اولیه و برای هر ترکیب موثر باشد.

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

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

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

9. سازماندهی داده ها. منبع اصلی یک الگوریتم ، اطلاعات یا داده های خام است که باید پردازش شوند. کامپایلر الگوریتم موظف است نه تنها در مورد چگونگی و توالی انجام پردازش ، بلکه همچنین در مورد اینکه کجا و چگونه نتایج متوسط \u200b\u200bو نهایی الگوریتم را ضبط کند ، فکر کند. ما م componentsلفه های فرهنگ الگوریتمی را ذکر کرده ایم ، تسلط بر آنها برای شکل گیری مهارت ترکیب الگوریتم ها - الگوریتم ها و بنابراین برنامه نویسی برای رایانه ها اساسی است. با این حال ، ویژگی م componentsلفه هایی که فرهنگ الگوریتمی را تشکیل می دهند این است که آنها فقط بر تعامل دانش آموز با کامپیوتر تمرکز کمی ندارند ، اما به طور کلی ، معنای گسترده تری دارند و مستقل از برنامه نویسی هستند. به عبارت دیگر ، فرهنگ الگوریتمی دانش آموز به عنوان مجموعه ای از عمومی ترین ایده ها ، توانایی ها و مهارت های "پیش برنامه نویس" سطح اولیه سواد دانش آموز را نه تنها برای کار موفقیت آمیز در سیستم "دانش آموز - کامپیوتر" ، بلکه همچنین در سیستم های غیر ماشینی غیررسمی "دانش آموز - معلم" فراهم می کند. ، "دانشجو - دانشجو" و غیره محتوای عملیاتی را ایجاد می کند که به ویژه فعالیت های دانشجو را در چارچوب رشته های دانشگاهی خارج از محیط "رایانه" خدمت می کند. همانطور که آکادمیسین E.P. Velikhov در رابطه با مقدمه ای در مکتب موضوع مبانی انفورماتیک و مهندسی کامپیوتر متذکر شد ، "انفورماتیک بخشی از فرهنگ مشترک بشری است که محدود به استفاده از رایانه نیست ، بلکه مثلاً توانایی توضیح راه برای یک بازدید کننده است. با هدف شناسایی مطالب آموزشی عمومی در زمینه برنامه نویسی برای مدارس متوسطه ، در نهایت با وظیفه آموزشی تشکیل یک موضوع عمومی آموزشی (بخش) در مورد برنامه نویسی برای درج در برنامه درسی یک مدرسه انبوه همراه بود. چنین تلاشی اولین بار در اواسط دهه 1970 تحقق یافت: در این دوره جبر کلاس VIII برای مکالمه ای با موضوع "محاسبات و الگوریتم ها" و بعداً یک بخش 11 ساعته "الگوریتم ها و عناصر برنامه نویسی" مطالب ظاهر شد.

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

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

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

مدرسه قدیمی

اولین درس های علوم کامپیوتر ، معلمانی که قلبشان جیر جیر است ، اجازه می دهند کودکان در نزدیکی رایانه های مدرسه باشند تا به آنها اولین زبان برنامه نویسی در زندگی را آموزش دهند. 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 آغاز کنید ، اما اگر هرگز برنامه نویسی نکرده اید ، بهتر است مسیر کمترین مقاومت را دنبال کنید و این دو زبان را برای مطالعه آینده بگذارید. در همان زمان مقایسه کنید.

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

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

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

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

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

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

به عنوان مثال ، EV Andreeva ، که گفته می شود توسط Polyakov نقل شده است ، سه سال پیش تصمیم گرفت سعی کند به دانش آموزان کلاس 6-7 در "Intellectual" در پایتون آموزش دهد. قبل از آن ، او نسبت به این کار بدبین بود ، اما تصمیم گرفت سعی کند. شش ماه بعد ، او قبلاً در كنفرانس ها صحبت كرد و گفت كه بهتر است به دانش آموزان دبستان در پایتون آموزش داده شود ، كه او واقعاً به آن اعتقادی نداشت ، اما سپس آن را امتحان كرد و در عرض چند ماه دیدگاه های او تغییر كرد. بنابراین من نمی دانم Polyakov چه نقل قول می کرد و این نقل قدمت چند ساله است ، اما دیروز من به طور خاص این مکاتبات را به Andreeva نشان دادم و از او خواستم که پاسخ دهد ، که او پاسخ "Shumilina - دانش آموزان سطح متوسط \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 مرتب سازی و استفاده م effectivelyثر از آنها را بیاموزم ، و این در مطالعه الگوریتم های مرتب سازی اختلال ایجاد نمی کند. در MIT (انستیتوی فناوری ماساچوست) ، همه دوره های اولیه برنامه نویسی چند سال پیش به پایتون ترجمه شد. در دانشکده جدید علوم کامپیوتر دانشکده عالی اقتصاد دانشگاه دولتی ، که در سال 2014 با مشارکت Yandex ایجاد شد ، این زبان پایتون است که اولین زبان برنامه نویسی است که توسط دانشجویان آموزش داده می شود. در اینجا من دانشکده جدید را مثال می زنم ، زیرا در دانشگاه هایی که برنامه های از قبل تاسیس شده دارند ، تغییر دادن چیزی دشوارتر است ، به عنوان مثال ، در دانشکده CMC دانشگاه دولتی مسکو ، تلاش برای جایگزینی Pascal با C ، به عنوان اولین زبان برنامه نویسی ، به دلیل عدم تمایل به تغییر برنامه های موجود و تعداد معلمان ، ناموفق بود.

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

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

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