Програмісти забувають синтаксис


17

Чи потрібно хорошим програмістам мати синтаксис на кінчику мови під час написання коду? Що ви робите з них, якщо вони користуються Google для простих речей в Інтернеті? Вони хороші чи погані (можливо, вони знають, де їх шукати)? Чи повинні програмісти мати гарну пам’ять? Це риса хорошого програміста?


1
Залежно від того, наскільки "просто". Деякі приклади / фони були б корисні. Також це може бути проблемою невідповідності мови / середовища, яке вони програмують.
rwong

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

У C ++ мені зазвичай доводиться шукати синтаксис для покажчиків на функції (член чи ні), оскільки використовую його не так часто ... можливо, що іноді синтаксис просто дивний ?
Матьє М.

Відповіді:


25

Моя філософія програмування полягає в тому, що це "стан душі", а решта - "просто синтаксис". (тобто не (як) важливо)

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


8
Точно так, як розмовна мова: ви повинні знати, як її розмовляти, але словники - це велика допомога. Часто ви знаєте, що ви хочете висловити, перш ніж мати словниковий запас!
Кевін Канту

@Kevin - Саме так - але ви також можете судити про чиюсь вільність, наскільки часто вони роблять такі посилання. Більшість з нас час від часу використовує їх, але ви б допитали когось, хто сказав, що він може розмовляти мовою, але відчував необхідність постійно звертатися до словника.
Джон Хопкінс

@jon точно. Продовжуючи метафору розмовної / писемної мови, доклавши певних зусиль, ми можемо збільшити свій вплив на мову та покращити свій словниковий запас. Звідси мій несамовитий апетит до читання та продовження пошуку хорошого флеш-програми iPhone. Точно так само і для мов програмування, коли у мене виникають проблеми з певною ідіомою, я створюю фрагмент, який демонструє його, і тримати його під рукою для легкої довідки. І, звичайно, я вказую на необхідність періодично переглянути ці проблемні місця. Минув деякий час, але я нарешті запам’ятав прикметну заяву комутатора таким чином.
Джордж Маріан

Я думаю, що і більш «просунутий» розробник, ймовірно, матиме кілька мов під поясом, а іноді і заплутає їх. Я все ще періодично плутаю декларацію багатовимірного масиву між C # і C ++ (чи було це "arr [] [] або arr [,]") і мушу шукати його.
Стівен Еверс

28

Це залежить від того, що ви маєте на увазі, але коротка відповідь - так.

Чи програмісти забудуть тут і там напівколонку або дужку? Звичайно. Чи збираються вони шукати синтаксис оператора перемикання, оскільки вони, ймовірно, рідко його використовують? Ну, я. Я буду працювати з ActionScript, але записувати його як Java? Безумовно. Може знадобитися певний час, щоб звикнути друкувати новою мовою, особливо якщо ви працювали з іншою роками.

Справжнє занепокоєння повинно бути, якщо програміст не може створити голови або хвости синтаксису, навіть якщо IDE допомагає їм. Якщо людина не знає, що таке двокрапка або що таке модні фігурні фігурні дужки, то їм належить ще вивчити.


8
Ге, точний синтаксис твердження перемикання, як правило, також дає мені горе.
Джордж Маріан

Це та сама причина, що я дотримуюся сценаріїв Python, навіть коли я віддаю перевагу Рубі. Мені доводиться кодувати в Python на роботі, і назад і назад було б занадто заплутано.
LennyProgrammers

+1 для синтаксису оператора перемикання - його чомусь просто невловимо
billy.bob

5
Не кажучи вже про безліч мов, які знає людина, і синтаксис часом може поєднуватися між собою.
Йосаф

@dave Я думаю, що проблема полягає в поєднанні символів. Зазвичай switch, після цього відбувається щось у дужках, потім вступна дужка, потім caseз міткою, яка відсутня в дужках, потім двокрапка, а потім твердження, як правило, не мають значення з напівколонами. І, не забуваймо, breakзаяви. Через зусилля та повну силу волі я нарешті запам'ятав це, і мені доводиться періодично перевіряти; просто щоб переконатися.
Джордж Маріан

10

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


+1. Я вважав би себе вільно в C ++ і я дивлюся на імена функцій і аргументи щодня . std::stringНаприклад, я ніколи не збираюся запам’ятовувати кожного члена .
Михайло Кристофік

8

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


4
+1 Цілком погоджуюсь. Кодери, які скачуть між мовами зі швидкістю вузлів (я можу мати 10 мов і більше в дорозі за день, що охоплює багато проектів), в кінцевому підсумку виникають проблеми з запам'ятовуванням незрозумілих відмінностей між подібними мовами, особливо в стандартних функціях бібліотеки. Це стає гірше, коли ви старієте, я помітив.
Увімкнення

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

5

Я пишу С ++ протягом> 15 років, але досі не знаю напам'ять деяких його прихованих синтаксичних куточків.
Як ви явно інстанціюєте шаблон функції знову? І який синтаксис частково спеціалізується на шаблоні, який має аргумент шаблону-шаблону? І не запускайте мене починати з оголошення функції, яка повертає вказівник на масив покажчиків до функцій, які приймають масиви вказівників на ...

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


4

Мені цікаво тут "синтаксис" Googling.

Моя підозра (і страх) полягає в тому, що ми не говоримо про те, які параметри приймає виклик (оскільки більшість IDE підкаже вас там, щоб ви не їх Google), а про те, як "робити X".

IDE зробили непотрібним запам'ятовувати точні імена та списки параметрів таким чином, як це було потрібно, і багато людей з цього приводу трохи лінувалися, але це добре.

Але щось потрібно Google? Для мене це, як правило, не синтаксис, це просто те, що ви насправді не знаєте, або лише знайоме.

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

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

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

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


Прокоментуйте голосування проти? Мені по-справжньому цікаво, у чому суперечка.
Джон Хопкінс

+1 - Добрий дзвінокsyntax != api
Джеремі Хайлер

3

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


0

Синтаксис - це лише погляд на основну семантику мови, оскільки програмування - це використання базових смислових цеглинок для побудови чогось. Якщо ви не розумієте основних понять, якими користується мова, то не важливо, наскільки ви добре запам'ятовуєте синтаксис, ваш код стане жахливим безладом. Як хтось колись сказав: "Хороші програмісти мають в голові перекладача та компілятора". Зауважте, як не згадується синтаксис, оскільки там не відбувається справжня робота.

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