Чи потрібно розуміти внутрішню мову мови програмування?


11

Я початківець з Python, і мені це дуже подобається до цих пір. Одне питання, яке мені дуже часто спадає на думку, - це якщо мені потрібно зрозуміти і тому вивчити внутрішні мови мови програмування (як у моєму випадку Python). Як ви могли знати, сам Python написаний на C.

Отже, моє запитання: наскільки глибоко потрібно занурюватися в мову програмування, щоб володіти цією мовою або вільно володіти нею. Я порівнюю це питання з "природними" мовами. Я не знаю кожної деталі з граматики на своїй рідній мові, але я вмію виражати себе без проблем на цій мові. Це коли я кажу, що я вільно володію мовою. Це стосується і мов програмування?


4
Внутрішні особи стають важливими, коли вам доведеться турбуватися про продуктивність.
Gort the Robot

7
Я знаю небагато про внутрішні протоколи CPython та PyPy, але 80% часу вони не приносять користі (або навіть шкідливі, як у відволіканні) для мого програмування Python. Я радий, що знаю, що це решта на 20%, але це не лише для продуктивності, а також для розуміння дурних повідомлень про помилки та керування від непорушної поведінки.


2
Ніп і ніп. Однозначно не дублікат жодного з цих.

1
Це залежить від того, що ви маєте на увазі під "внутрішніми", але я знаю, що це не рідкість для професійних програмістів на C # та Java, щоб мати хоч деяке розуміння CLI або JVM.
user16764

Відповіді:


8

Вам не потрібно нічого знати про внутрішні мови мови програмування, щоб писати програми цією мовою. Однак, чим краще ви розумієте мову, тим краще будуть ваші програми.

  1. Знання структур даних та алгоритмів допоможе вам вибрати структури даних, які найбільш підходять для вашої конкретної задачі. Деякі мови володіють цими структурами даних всередині країни.

  2. Розуміння "культури" мови допомагає вам писати програми, які дотримуються "кращих практик", роблячи їх легшими для розуміння, більш доступними та ефективнішими.

  3. Написання компілятора для цієї мови (або компілятор для іншої мови цією мовою) може дати вам глибоке розуміння мови та покращити ваші програми, окрім лише середнього рівня.

  4. Знання інших мов (особливо, інших парадигм) робить вас кращим програмістом на вашій основній мові, тому що ви можете принести ці навички та інструменти, щоб нести свою основну мову.

Як наслідок, вам не потрібно нічого знати про свій комп'ютер, щоб писати на ньому програми. Але знання того, як працює ваш комп’ютер, дозволяє вам краще писати програми для нього.


7

Я не знаю кожної деталі з граматики на своїй рідній мові, але я вмію виражати себе без проблем на цій мові. Це коли я кажу, що я вільно володію мовою. Це стосується і мов програмування?

Простіше кажучи, так. Поки ви можете добре висловити себе (і зрозуміти інших), то вас вважають вільно володіючи мовою.

Але це означає, що просто бути вільним володінням недостатньо для деяких робіт. Окремі види авторів, завдання, які вимагають зразкових навичок публічного виступу, і деякі вчені, які зосереджуються на мові, повинні знати її "краще, ніж вільно". Так само деякі програми програміста вимагають знання мовних програм, але для більшості людей, які знають еквівалент мови програмування, як запитати її номер чи замовити чизбургер, достатньо.


0

Я б визначив "знавців" мовою як:

  • Зрозумійте більшість синтаксису та достатньо знань для дослідження будь-яких нових особливостей, які ви знайдете в коді інших людей.
  • Робочі знання про будь-які стандартні бібліотеки та / або рамки, а також можливість знаходити, читати та розуміти офіційну документацію щодо всього нового, що потрібно використовувати.
  • Розуміння та вміння використовувати загальні ідіоми та умовні позначення мови.

Зверніть увагу , що , як працює мова НЕ в цьому списку, але є багато «здатність до навчання». Маючи принаймні коротке розуміння внутрішніх справ, може бути корисним, але необов’язково мати досвід. Однак, знаючи про них достатньо, що ви зможете зрозуміти будь-які посилання в документації, яку ви читаєте, - дуже гарна ідея.

Наприклад: Я знаю, що і VB.NET, і C # компілюється в IL. (Проміжний мова) .NET, який потім компілюється для цільової основи. Я мало що знаю про ІЛ, але знаю достатньо, щоб розпізнати його, коли бачу його, і зрозуміти в загальному сенсі, як він справляється з певними речами. Я вважаю себе досвідченим у C #, але не у VB.NET, навіть якщо "внутрішні" однакові, і моє розуміння їх не є глибоким.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.