Підходяща лексика при допомозі початківцям програмістам


9

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

Наприклад: можна записати функцію, але не зрозуміти, чому вона не виконується, не розуміючи, що забули її викликати. Якщо я використовую фрази типу "(make a) call (to) the function/it"і "pass it the.."я отримую порожні погляди.

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

Чи є інші фрагменти лексики, які більше підходять (краще для?), Що допомагають початківцям програмістам? Або це не питання спілкування?


5
Користувачі електронних таблиць знають, як викликати функцію. Багато хто може написати своє. Тут щось принципово не так.
JeffO

@JeffO Я відчував щось не так, але хотів дати цьому модулю та людям користь від сумнівів
Енді Хант,

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

3
@AndyBursh: як такі студенти потрапили на другий курс? Сподіваємось, вони не здадуть іспити та не виберуть роботу поза розробкою програмного забезпечення.
Doc Brown

3
Можливо, ляльки-шкарпетки допоможуть
MattDavey

Відповіді:


15

Їм доведеться з часом навчитися правильним умовам, чим швидше, тим краще.

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


2
Я збирався опублікувати майже таку ж відповідь, то ваш завантажений. :) +1
Tom Squires

Не доводьте пояснень до рівня, підніміть рівень.
Бент

2

В загальному

Коли людина вас не розуміє, у вас є дві альтернативи:

  1. Адаптуйте словниковий запас відповідно до того, що людина знає чи ні,

  2. Поясніть людині терміни, які вона не розуміє.

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

Наприклад, ви можете використовувати метод терміна в C # або Java, і людина, яка в основному працює з якоюсь іншою мовою, не зрозуміла б цей термін. Потім ви поясните, що в C # або Java метод посилається на те, що ми зазвичай називаємо функцією (наприклад, в C), і що у C # або Java немає такого поняття, як функція . Наприклад, у PHP існують і методи, і функції, і вони мають різний зміст . Якщо різниця занадто болюча для людини, ви поговорите про функції заради простоти.

У вашому точному випадку ви навряд чи можете вибрати перший: "здійснити виклик до функції" неможливо переформулювати будь-яким простішим способом. Дзвінок - це дзвінок. Ви не можете більше спростити це.

Це означає, що ви повинні вибрати другий шлях: поясніть людині кожен технічний термін.

  1. Або вкажіть людину на словник або Вікіпедію, яка дуже добре працює з основними поняттями та термінологією.

    Я вибрав би це для загальновживаних термінів . Наприклад, я б запропонував людині прочитати Вікіпедію, щоб зрозуміти, що таке поліморфізм, або що таке коваріація та протиріччя. Ці умови вже дуже добре пояснені, тому тут не потрібно винаходити колесо.

  2. Або поясніть власними словами .

    Я вибрав би це для термінів, специфічних для контексту та / або прийняття широкого спектру визначень . Наприклад, Вікіпедія не дуже допомагає зрозуміти бачення Microsoft щодо хмарних обчислень, і я скоріше поясню себе, що таке хмара для того, хто буде працювати над додатком Windows Azure.

У вашому конкретному випадку

Люди, з якими ви розмовляєте, не мають найосновніших понять і термінів, які використовуються в програмуванні. Вони не можуть продовжуватись, не вивчаючи цієї основної лексики , оскільки вони взагалі не здатні спілкуватися : вони не вміють читати книги про програмування чи блоги, не вміють слухати своїх колег і навіть не можуть задавати питання на тему Складіть веб-сайти Exchange, оскільки ніхто не зрозуміє, що вони просять.

У вашому випадку, замість того, щоб шукати підходящу лексику, я витратив би кілька днів або тижнів, навчаючи їх деяким основним поняттям програмування та загальновживаним термінам . Через кілька днів ви зможете поговорити з ними, не вимагаючи постійно «малювати їх фотографії та використовувати метафори за участю котів та собак» .


1

Замість функцій почніть з підпрограм . Скажіть їм, що програма - це лише список інструкцій, рецепт, щоб розповісти комп’ютеру, як щось робити. І що вона виконується одна інструкція за іншою (з можливістю робити кілька кроків паралельно, але про це пізніше).

Деякі завдання є досить поширеними та повторюваними, тому було б жахливо, якби нам завжди доводилося їх записувати знову і знову, тому ми пишемо їх лише один раз і робимо з нього "меншу програму" - підпрограму , яку можна повторно використати інші частини програми. Для того, щоб мати можливість його виконувати не один раз, ми даємо йому значущу назву в нашій програмі. І тоді ми можемо використовувати це ім'я, коли хочемо виконати цю «маленьку програму» як частину більшої, називаючи її цим іменем.

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

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

Параметри - це ті відомості, які відсутні, але необхідні для виконання завдання. Вони трохи змінюють те, що може зробити підпрограма. Вони схожі на порожні прорізи в рецепті, які потрібно заповнити, перш ніж ми могли виконати його.

Аргументи , з іншого боку, - це фактична інформація (значення), яку ми надаємо за цими параметрами.

Щодо паралельного виконання, ми можемо думати про це так: завжди є хтось (або щось ), який виконує програму (список інструкцій). Це або інша людина (чи знаєте ви, що колись "комп'ютер" був ім'ям для людини, яка проводила обчислення?), Або машина. Програма - це лише список інструкцій, вона не працює самостійно. Має бути хтось чи щось, хто буде виконувати обчислювальний процес(виконайте ці дії зі списку). І іноді ці дії можна робити паралельно - ми можемо поширити копії списку декільком людям і дозволити кожній із них виконувати різний набір завдань зі списку, поки вони не перебивають один одного або не роблять ' не доведеться чекати результатів чужої роботи. Це для вас багатопоточність ;)

Що стосується різниці між функціями та підпрограмами (їх також називають процедурами ), звичайна різниця полягає в тому, що функція викликається для обчислення певного значення, яке вона повертає в результаті її виконання, тоді як процедури виконуються просто для задоволення;) AKA для їх "побічних ефектів" - просто заради операцій, проведених зі списку.

Але якщо виклик процедури чи функції спочатку викликає певні неприємності, ви можете використовувати інший популярний колись термін: стрибки . Можна перейти до підпрограми, а це означає, що ви припиняєте виконувати все, що ви робите зараз, і "перестрибуєте" в інше місце у списку (або інший список) - підпрограму - для виконання своїх завдань. Потім, коли ви закінчите, ви «стрибаєте назад» - тобто повертаєтесь на місце, яке вас перервало, щоб ви могли продовжувати своє попереднє завдання. Різниця між дзвінками та стрибками полягає в тому, що тепер ти - демон.

Що стосується методів, які тут хтось згадав, чи того, що деякі мови "не мають функцій, а лише методи" - це не зовсім правильно, адже методи - це функції! - особливий їх вид : це функції, які використовуються для отримання певної інформації, яка міститься в об'єкті, або працює над ними. Вони є "методом роботи над цими даними". Назва походить від об'єктно-орієнтованої парадигми, в якій дані укладені з об'єктами і не можуть керувати ними безпосередньо, лише за допомогою спеціальних функцій, що називаються "методами".

Метод особливий певним чином: він повинен знати, яким конкретним об'єктом він повинен керувати / викликатися (об'єкт "цей"). Ось чому методи зазвичай прикрашені додатковим прихованим параметром, який зберігає інформацію про об'єкт, на який він викликаний (покажчик "цей"). Це ускладнює те, як функцію викликають трохи, але це "деталь реалізації", який програміст не повинен сильно турбувати, поки він знає, що робить.

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