همه می‌توانند به راحتی برنامه‌نویسی را یاد بگیرند-اگر زبان انگلیسی بدانند!

شکل ۱: برنامه‌نویسی
شکل ۱: برنامه‌نویسی


منتشر‌شده در: towardsdatascience به تاریخ ۲۴ فوریه ۲۰۲۱
لینک منبع: Everyone Can Learn Programming Easily — If they Know English

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

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

تصور کنید که محبوب‌ترین زبان برنامه‌نویسی که شما در حال حاضر برای ایجاد وب‌سایت خود، HTML، استفاده می‌کنید، انگلیسی نیست بلکه چینی است. زمانی که می‌خواهید یک وب‌سایت زیبا را با بررسی آنلاین کد منبع آن بررسی کنید، همه چیز به زبان کانجی است. به جای داشتن یک تگ <title>، یک تگ <稱號> دارید. به جای داشتن <article>، شما <文章> را دارید. شما هنوز هم احساس انگیزه می‌کنید و می‌خواهید با وب ارتباط برقرار کنید. بنابراین، شما به دنبال مطالب آنلاین می‌گردید. با این حال، شما متوجه می‌شوید که پاسخ به محبوب‌ترین سوالات جامعه برنامه‌نویسی نیز به زبان چینی است. شما احساس ناامیدی می‌کنید و یادگیری HTML را رها می‌کنید و ابتدا به یادگیری کانجی می‌پردازید.

در تئوری، کامپیوتر تا زمانی که آن زبان‌ها بتوانند کد بایتی ۰ و ۱ را که ماشین می‌تواند درک کند، کامپایل کنند، اهمیتی به این نمی‌دهد که ما در حال کدگذاری به چه زبانی هستیم. جمله if، دستور while و دستور for به انسان کمک می‌کند تا به راحتی دستورهای کامپیوتری را به گونه‌ای طراحی کند که کامپایلر بتواند آن‌ها را به بایت کد ترجمه کند.

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

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

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

مستندات عمدتا به زبان انگلیسی هستند.

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

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

انگلیسی زبانان غیربومی که می‌خواهند ایده‌های برنامه‌نویسی خود را به عنوان مستندات بیان کنند نیز در توصیف آن‌ها مشکل دارند. برای مثال، خالق Redis، سالواتوره سانفیلیپو، در مورد تقلا و کشمکش خود در بیان افکار به زبان انگلیسی صحبت می‌کند. آن‌ها قصد داشتند یک حمله TCP / IP را اجرا کنند، اما آن‌ها نمی‌توانند یک پست در مورد آن به زبان انگلیسی بنویسند، زیرا او ۵۰٪ انرژی خود را صرف درک جمله‌ای که می‌نویسد کرده است.

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

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

ما توسعه‌دهندگان را تشویق می‌کنیم که کد قابل خواندن و قابل نگهداری بنویسند. با این حال، این کد قابل خواندن، یک کد را برای ایجاد شناسه کد، متغیر، توابع و نام کلاس در زبان انگلیسی اجباری می‌کند. بیشتر کلمات کلیدی زبان برنامه‌نویسی مانند if، else، while همگی به زبان انگلیسی هستند. شما می‌توانید بگویید که انگلیسی زبانان فنی در مقایسه با انگلیسی زبانان زمان بیشتری برای یادگیری اغلب زبان‌های برنامه‌نویسی نیاز ندارند زیرا بیشتر دستورات از ریاضیات مشتق شده است. می‌توانید بگویید که بسیاری از کلمات کلیدی-if، else، while، type def، «Class» یا «type» دقیقا همان چیزی نیستند که در زبان انگلیسی معنی می‌دهند. همه این «متغیرها» معانی خاصی در برنامه‌نویسی دارند. با این حال، دیگر انگلیسی زبانان غیربومی برای درک اینکه while، کلاس، یا instances به چه معناست، تلاش می‌کنند، زیرا این کلمات کلیدی ممکن است معانی بیشتری در زبان مادری خود داشته باشند. برای مثال، while در پرتغالی معنای دیگر و بیشتری نسبت به آنچه که در کد استفاده می‌شود دارد.

فراتر از کلمات کلیدی زبان برنامه‌نویسی استاندارد، انگلیسی زبانان غیربومی زمان سختی را برای خواندن نام توابع خلاصه‌شده دارند - درک چیزی مانند getCh() یا strstr() در C دشوار است.

برخی زبان‌ها رابطه فعل-فاعل را رعایت نمی‌کنند. در زبان ژاپنی، دستور زبان Subject-Object-Verb است. بنابراین، آن‌ها در نوشتن یک گیرنده و کنترل‌کننده مشکل دارند زیرا اجزای گرامری متفاوت از ژاپنی هستند. همچنین، بسیاری از سناریوهای تست مبتنی بر رفتار، جملات کامل انگلیسی را برای تست رفتار خاص در برنامه تقلید می‌کنند. برای مثال، اگر می‌خواهید یک یونیت تست در کلاس Matcher در اسکالا بنویسید، به شما این امکان را می‌دهد که موارد تست را مانند نوشتن یک جمله به زبان انگلیسی بسازید.

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

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

استفاده از نام متغیر کامل و اجتناب از هرگونه اصطلاحات از فرهنگ شما

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

برخی زبان‌های برنامه‌نویسی مانند Clojure یا Haskell، متغیرهای نام‌گذاری انتخابی دارند و آن‌ها را f یا g نامگذاری می‌کنند زیرا تعریف تابع آن آنچه را که انجام می‌دهد توصیف کرده است. برخی از قراردادهای نام‌گذاری متغیر در API کلوژور دارای اصطلاحات فنی برنامه‌نویسی کاربردی خاص هستند و اصطلاحات ریاضی نام‌هایی مانند reify یاtransducer دارند که هیچ سو تفاهمی را متوجه مشتری نمی‌کنند.

یکی از ابزارهای قدرتمند زبان‌های برنامه‌نویسی تابعی، این است که دستور آن‌ها مانند یک فرمول ریاضی است. شما می‌توانید بدون نگاه کردن به نام این روش، آنچه را که این تابع انجام می‌دهد، شناسایی کنید. به عنوان مثال، اگر می‌خواهیم برخی از آن‌ها را در یک لیست در یک عنصر ترکیب کنیم. می‌توانیم چیزی شبیه این بنویسیم: def f[A:Monoid](list:List[A]): A، که به ما می‌گوید، «اگر من یک لیست A را به عنوان ورودی قرار دهم، تابع A را باز برگردان». البته، باید گفت که f بسیار کلی است، و برای حالت استفاده از خلاصه یک لیست مناسب نیست. با این حال، تعریف تابع و یک توضیح ساده می‌تواند به انگلیسی زبانان غیربومی کمک کند که بدانند از f چه انتظاری داشته باشند و چگونه می‌توانند آن‌ها را اجرا کنند.

مثال‌های بیشتر و متن کم‌تر

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

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

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

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

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

استفاده از تصویرسازی و تجسم بیشتر در مواد آموزشی فنی

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

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

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

نتیجه‌گیری

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

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

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

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