Программисты забывают синтаксис

17

Должны ли хорошие программисты иметь синтаксис на кончике языка при написании кода? Что вы с ними делаете, если они ищут в Интернете простые вещи? Они хорошие или плохие (может, они знают, где искать)? Должны ли программисты иметь хорошую память? Это черта для хорошего программиста?

maz3tt
источник
1
В зависимости от того, как «просто». Некоторые примеры / фоны будут полезны. Это также может быть проблемой несовместимости с языком / средой, которую они программируют.
Руонг
1
Я думаю, что это будет частью определения хорошего программиста, так как он подпадает под быстрое \ эффективное. Если вы не можете написать строку кода со справочной ссылкой, вы не получите своевременного выполнения каких-либо действий. С другой стороны, это не призыв к запоминанию вещей.
Stonemetal
В C ++ мне обычно приходится искать синтаксис для указателей на функции (член или нет), поскольку я использую его не так часто ... возможно, что иногда синтаксис просто странный ?
Матье М.

Ответы:

25

Моя философия программирования заключается в том, что это «состояние души», а остальное «просто синтаксис». (т.е. не (как) важно)

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

Джордж Мариан
источник
8
Точно, как разговорный язык: вы должны знать, как на нем разговаривать, но словари очень помогают. Часто вы знаете, что вы хотите выразить, прежде чем у вас есть словарный запас!
Кевин Канту
@Kevin - Точно - но вы также можете судить о беглости чьих-либо людей по тому, как часто они делали такие ссылки. Большинство из нас будут использовать их время от времени, но вы спросите кого-то, кто сказал, что они могут говорить на каком-то языке, но чувствовал необходимость постоянно обращаться к словарю.
Джон Хопкинс
@ jon Точно. Продолжая метафору разговорной / письменной речи, с некоторыми усилиями мы можем увеличить наше знание языка и улучшить наш словарный запас. Отсюда мой жадный аппетит к чтению и постоянный поиск хорошего приложения для флеш-карты iPhone. Аналогично для языков программирования, когда у меня возникают проблемы с определенной идиомой, я создаю фрагмент кода, который демонстрирует его и держу под рукой для удобства. И, конечно же, я хочу периодически посещать эти проблемные области. Это заняло некоторое время, но я наконец запомнил это надоедливое заявление о переключении.
Джордж Мариан
Я думаю, что более «продвинутый» разработчик, скорее всего, будет иметь в своем распоряжении несколько языков, а иногда и запутает их. Я все еще путаю объявление многомерного массива между C # и C ++ время от времени (было ли это "arr [] [] или arr [,]") и мне приходится искать его.
Стивен Эверс
28

Это зависит от того, что вы имеете в виду, но короткий ответ - да.

Программисты собираются забыть точку с запятой или скобку здесь и там? Конечно. Собираются ли они искать синтаксис оператора switch, потому что они, вероятно, редко его используют? Ну, я делаю. Буду ли я работать с ActionScript, но вместо этого напишу его как Java? Определенно. Это может занять некоторое время, чтобы привыкнуть печатать на новом языке, особенно если вы работали с другим языком в течение многих лет.

Реальная проблема должна состоять в том, если программист не может придумать синтаксис даже при помощи IDE. Если человек не знает, для чего нужна точка с запятой, или каковы эти причудливые фигурные скобки, ему нужно больше учиться.

Джереми Хейлер
источник
8
Хех, точный синтаксис оператора switch обычно также вызывает у меня горе.
Джордж Мариан
По этой же причине я придерживаюсь скриптов Python, даже когда предпочитаю Ruby. Я должен кодировать на Python на работе, и назад и вперед будет слишком запутанным.
LennyProgrammers
+1 для синтаксиса оператора switch - по какой-то причине он просто неуловим
billy.bob
5
Не говоря уже о множестве языков, которые каждый знает, и синтаксис временами может сочетаться.
Иосиф
@ Дэйв Я думаю, что проблема в сочетании символов. Это, как правило switch, следует что - то в скобках, то открывающей скобки, то caseс этикеткой, которая не в скобках, затем двоеточие, то операторы обычно termimanted точкой с запятой. И давайте не будем забывать, breakзаявления. Именно благодаря усилиям и чистой силе воли я наконец запомнил это, и мне все еще приходится периодически проверять; просто чтобы убедиться.
Джордж Мариан
10

Я определенно был бы удивлен, если бы в противном случае хорошему программисту приходилось регулярно искать синтаксис для языка, на котором он свободно говорил. Конечно, могут быть угловые случаи, которые на самом деле не используются на практике так, что это было бы совершенно приемлемо чтобы хороший программист не знал их, но, как правило, беглый программист не должен искать синтаксис. Он / она должен искать функции и классы из библиотек :)

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

Если вы постоянно меняете языки или работаете на 3 или 4 языках одновременно, вы ничего не можете с этим поделать. Некоторое время я заканчивал тем, что работал над проектами, которые требовали постоянного переключения, и начал называть себя «справочным программистом», вынужденным искать вещи гораздо больше, чем я бы предпочел.

Мэтью Фредерик
источник
4
+1 полностью согласен. Программисты, которые переключаются между языками со скоростью узлов (у меня может быть 10 или более языков на ходу за день, охватывающий многие проекты), в конечном итоге испытывают трудности с запоминанием неясных различий между похожими языками, особенно в стандартных функциях библиотеки. Это становится хуже, когда ты становишься старше, я заметил.
Orbling
Это моя проблема, мы работаем так много вещей на работе, что иногда я не могу вспомнить даже основы. Тем более, что я обычно могу просто использовать контекст, кто-то написал цикл for или функцию поблизости, я просто копирую этот синтаксис. В последнее время я заставлял себя изучать синтаксис, но рассчитывать на то, что я запомнил его, недостаточно. Я выбрал один язык (Javascript), чтобы использовать синтаксис в моем мозгу. Это очень помогает, особенно с практикой интервью на доске.
Джемме
5

Я пишу на C ++ более 15 лет, но до сих пор не знаю наизусть некоторые его загадочные синтаксические углы.
Как вы явно создаете экземпляр шаблона функции снова? И каков синтаксис для частичной специализации шаблона, который имеет аргумент шаблона-шаблона? И не начинайте меня с объявления функции, которая возвращает указатель на массив указателей на функции, которые принимают массивы указателей на ...

Я подозреваю, что в этом мире есть не более одного или двух десятков человек (если они вообще есть), которые действительно знают весь синтаксис C ++ наизусть. И все они, вероятно, зарабатывают деньги, написав интерфейсы компилятора C ++.

SBI
источник
4

Мне любопытно по поводу "синтаксиса" Google.

Я подозреваю (и боюсь), что мы говорим не о том, какие параметры принимает вызов (потому что большинство IDE предложит вам это сделать, чтобы вы их не гуглили), а о фактических вещах типа «как сделать X».

В среде IDE нет необходимости запоминать точные имена и списки параметров так, как это требовалось раньше, и это заставляет многих лениться, но это нормально.

Но что-то нужно в Google? Для меня это, как правило, не синтаксис, это просто то, что вы либо не знаете, либо знакомы с ним лишь отчасти.

Конечно, это не значит, что неправильно иметь дело с Google - языки могут быть довольно широкими в наши дни, и мало кто знает все, но я бы сказал, что если вы заявляете, что обладаете знанием языка, то Google должен быть скорее исключением, чем правилом ,

Для меня, если вы не делаете что-то относительно необычное, или, возможно, вы устали от языка после некоторого периода, когда вы делаете что-то другое, если вы заявляете, что «знаете» язык, вы не должны гуглить более 10% материала самое большее, и это должно быть действительно довольно специфическим материалом.

Что касается идеи о хорошей памяти, то это не совсем так. Речь идет о неком инстинктивном чувстве, которое вы получаете за то, что вы действительно (а не поверхностно) знаете. Я не рассматриваю тот факт, что я знаю, как приготовить Меланзан Пармиджану без рецепта, это признак того, что у меня хорошая память, это признак того, что я понимаю, как готовить это блюдо - это немного разные вещи.

Кроме того, спросите себя: не хотите ли вы пойти на кухню ресторана и найти повара, постоянно смотрящего на кулинарную книгу? Или чтобы механик, работающий над вашим автомобилем, пролистал руководство Hayes для этой модели? Если бы я увидел что-то из этого, мне было бы довольно неловко от того, насколько хорош этот человек.

Джон Хопкинс
источник
Комментарий для отрицательного голосования? Я действительно заинтересован в разногласиях.
Джон Хопкинс
+1 - Хороший вызовsyntax != api
Джереми Хейлер
3

Мое мнение - Нет. Это не синтаксис, который важен, а ваша логика для решения проблемы или достижения цели. Если вы предполагаете работать на нескольких языках, то естественно, что иногда вы не помните точный синтаксис.

Фраз Сундал
источник
0

Синтаксис - это просто представление поверх базовой семантики языка, потому что программирование - это использование базовых семантических блоков для создания чего-либо. Если вы не понимаете фундаментальных понятий, которые использует язык, то не имеет значения, насколько хорошо вы запоминаете синтаксис, ваш код будет ужасным беспорядком. Как-то кто-то сказал: «У хороших программистов в голове есть интерпретатор и компилятор». Обратите внимание, что нет никакого упоминания о синтаксисе, потому что это не то, где происходит настоящая работа.

davidk01
источник