Кажется, нужно иметь в виду все виды синтаксиса, чтобы иметь возможность программировать. Если у человека нет хорошей памяти для запоминания имен, будет ли труднее учиться программировать?
Кажется, нужно иметь в виду все виды синтаксиса, чтобы иметь возможность программировать. Если у человека нет хорошей памяти для запоминания имен, будет ли труднее учиться программировать?
Ответы:
Синтаксис языка не так сложен, как вы думаете, чтобы запомнить, если вы используете его ежедневно. В конце концов это становится очень легко. Запоминать все различные библиотечные функции может быть намного сложнее, и я не думаю, что большинство людей могут вспомнить больше, чем самые распространенные из них, которые они используют, но это нормально, если у вас есть доступ к Интернету, или к книге, или к чему-то еще, что " помнит "все остальные детали для вас.
Кажется, нужно помнить все виды синтаксиса, чтобы
программироватьна естественном языке.Если у человека нет хорошей памяти для запоминания
именныхслов, будет ли труднее научитьсяпрограммировать наязыке?
Не может быть правдой, что у людей есть «естественная» возможность говорить на языках, не так ли?
Это не может быть правдой, что у нас есть нейронное оборудование низкого уровня только для изучения языков, не так ли?
В программировании используются искусственные языки, которые следуют многим правилам естественных языков.
Естественные языки имеют немного больше гибкости , чем языки программирования.
грамматика по-прежнему строгая. Правила есть очень, которые, но
Если вы можете говорить, вы можете научиться программировать, не запоминая ничего больше, чем то, что вы запомнили, когда научились говорить.
Если вы говорите о краткосрочной памяти, то да . программист должен уметь одновременно манипулировать несколькими битами информации при программировании / решении проблем.
Если вы говорите о долговременной памяти, то не совсем. Есть много руководств и справочников + инструментов, которые могут значительно помочь в получении информации. Конечно, запоминание этой долгосрочной информации сделает вас более быстрым разработчиком (в целом), но это не является обязательным условием.
Хорошая память абсолютно необходима, но не по очевидным причинам.
Запоминание подробностей о конкретных алгоритмах, библиотеках, именах переменных и т. Д. Очень удобно, но не супер важно. У вас есть Google, DuckDuckGo, справочные страницы, документация для конкретного языка и умные редакторы, которые помогут со всем вышеперечисленным. Это помогает, если вам не нужно полагаться на эти костыли, но у вас все будет хорошо, если они вам понадобятся время от времени.
Память важна для сохранения деталей того, над чем вы работаете, в активной кратковременной памяти. Возможность визуализировать дизайн, поток данных, алгоритмы, структуры данных и то, как все они взаимодействуют, чтобы делать то, что делает ваш продукт, отделяет хорошего программиста от великого программиста. Когда вы активно этим занимаетесь, создается впечатление, что вы успешно манипулируете огромным количеством мячей во время езды на одноколесном велосипеде.
Это часто называют находящимся в зоне . Перебои, глупые вопросы, боссы, нуждающиеся в отчетах TPS, все выгоняют вас из этой зоны.
Чем лучше ваша память, тем легче попасть в зону, тем легче оставаться в ней и тем легче вернуться в нее после перерыва.
Если у вас есть проблемы с такого рода памятью, я бы посоветовал изучить приемы медитации и приемы памяти, поскольку чем более поверхностной становится ваша память, тем больший успех вы получите как программист.
Я собираюсь пойти против течения и сказать да . Хорошая память - это отличный актив для программиста. Моя память я всегда воспринимала как программную ответственность, поэтому я выбрала несколько хитростей, чтобы компенсировать свой недостаток:
Вы должны быть в состоянии запомнить, как была написана эта переменная (которую вы использовали 3 строками ранее). Если вы не можете научиться использовать Intellisense (или какая-либо другая форма автозаполнения в вашем редакторе или IDE).
Вы должны быть в состоянии быстро вспомнить, что вы делали в прошлый раз, когда вы работали над этим проектом. Это могло быть несколько дней назад, это могло быть как раз перед обедом. Если не можете, научитесь записывать вещи . Держите блокнот рядом с собой и напишите, что вы делали (или делаете), элементы TODO и что вам нужно помнить о том, как текущий код, над которым вы работаете, соответствует друг другу.
Отладка и тестирование - это сложно. В идеале вы должны хранить очень подробную записную книжку о шагах, которые вы предприняли, пытаясь воспроизвести ошибку или что-то отладить. Это то, что я знаю, что должен сделать, но все еще борюсь с.
Надеюсь это поможет!
«Партизанское руководство по собеседованию» (версия 3.0) - это общий справочник, в котором важными моментами программирования являются умные заметки и умение делать что-либо. Смарт включает в себя некоторые навыки памяти, но не обязательно столько, сколько вы думаете.
Intellisense может очень помочь, когда дело доходит до синтаксиса, если вам нужна помощь в этом. Знание того, как вы учитесь, чтобы вы могли быстро применить то, что вы изучаете осмысленно, важнее, чем способность отвечать на вопросы пустяков.
Я считаю, что запоминание имен - это довольно отличная когнитивная функция от запоминания процессов, которая отличается от запоминания словарей. Были случаи, когда люди получали черепно-мозговые травмы, которые полностью лишили способность запоминать имена, в то же время они могли функционировать совершенно иначе.
Поэтому я бы сказал, что способность запоминать имена не связана с изучением языков программирования.
Однако было бы полезно запомнить логические шаблоны, правила и словарный запас.
Нет. Глубина памяти инструментов (Intellisense, Google, компиляторы, генераторы кода) бесконечна по сравнению с человеческой памятью. Так что программист с хорошей памятью не намного лучше, чем с дырой в голове.
На самом деле программистам нужна «пиковая скорость усиления фокуса», когда они переключаются между уровнями абстракции. Чем быстрее вы можете, тем лучше вы как программист. У некоторых скорость сердцебиения, например, 500 мс, с приходом первой волны крови в мозг вы сосредоточены. У некоторых есть фокусирующие часы, округленные до цикла курения, около 2 часов. Некоторым нужен утренний душ, поэтому около 24 часов. и т. д. Разница между хорошим и плохим программистом была когда-то объявлена 1:80 раз назад, и разрыв только увеличивается.
Нет, вам просто нужно понять, как Google работает, чтобы получить то, что вы хотите
У меня ужасная память, но мои навыки поиска в Google потрясающие ^ _ ^
На самом деле, если вы знаете, где найти синтаксис, вам не нужно его запоминать. Вот для чего нужны intellisense, справочные файлы, справочные руководства, Интернет и т. Д.
Прежде всего, обучение программированию является сложным для всех. Хорошая память помогает, я уверен. Но самоотверженность и любовь к обучению на протяжении всей жизни более ценны. Изучение синтаксиса, как и все остальное, повторение.
В навыках программирования нет ничего волшебного или сверхчеловеческого. Просто потратьте около 10000 часов на это ... и вы станете мастером, как любой другой навык. Конечно, это 10000 часов тренировок, а не вслепую и умопомрачительно повторяя прошлые ошибки.
Вы написали этот пост на английском языке с правильным синтаксисом. Очевидно, вы можете вспомнить, как использовать язык. Вам просто нужно выучить новый язык и использовать его достаточно часто, чтобы вы все время правильно понимали. В отличие от языков, ориентированных на человека, языки программирования всегда сообщают вам, когда вы используете неправильный синтаксис, так что на самом деле это проще. :-)
Я согласен, что существует огромное множество вещей, которые обычный программист может знать для выполнения своих задач, просто подумайте обо всех словах, синтаксисах, методах, которыми вы должны в основном управлять, чтобы создать простой веб-сайт (на переднем крае: html, css, javascript (вы также можете посчитать некоторые Js-фреймворки как jquery), ajax, на серверной стороне: Php или ASP или ASP.Net, и не забывайте о базах данных, mySql или SqlServer, Oracle или MongoDB и т. д.). Существует огромный список языков, парадигм, синтаксисов, шаблонов и т. Д., Невозможно запомнить все из них.
Он считает, что хороший программист делает практику, практикует с алгоритмами больше, чем с языками, и с этим вы в конечном итоге будете помнить то, что вы чаще всего используете, в остальном всегда есть google = P
Отличная память может сократить оба пути.
Если вы сможете одновременно манипулировать десятками битов информации в своей голове, вам будет гораздо легче разобраться (и, надеюсь, переписать) этот ужасный кусок унаследованного кода, который важен для проекта, но настолько сложен, что все остальные боятся прикоснуться к нему.
С другой стороны, этот ужасный кусок кода, который критичен для проекта, но настолько сложен, что все остальные боятся его трогать, вероятно, был написан кем-то, обладающим потрясающей способностью манипулировать десятками битов информации. Если у вас отличная память, усердно работайте, чтобы научиться ценить элегантность простоты.
Изучение синтаксиса языка программирования не требует большой памяти. Как уже говорили другие, синтаксис в вашей памяти настолько укреплен, что быстро становится второй натурой. Вы когда-нибудь забывали, по какой стороне дороги вы должны ехать? Какие арифметические символы представляют сложение и вычитание? Если нет, вы освоите наиболее распространенные части синтаксиса выбранного вами языка без особых проблем, и вы сможете найти менее распространенные биты, когда они появятся.
Некоторые библиотеки имеют сотни или тысячи функций, классов и / или методов. Для постороннего может показаться невозможной задачей научиться использовать все эти функции. Но почти всегда есть какая-то базовая структура библиотеки. Вместо того, чтобы пытаться запомнить все эти функции, умный программист пытается понять, как организована библиотека и что она может делать. После этого обычно довольно легко найти нужную вам функцию, когда она вам нужна.
Короче говоря, память гораздо менее важна, чем понимание.
По-разному. В Java и .NET стандартные библиотеки находятся в некоторой иерархии и хорошо документированы. Поэтому, если вы знаете, что имеете дело с сетью, перейдите на system.net в C # и оттуда вы можете перейти к нужным объектам / вызовам. Таким образом, с этой точки зрения вам не нужно запоминать детали и там.
В вашей собственной программе это все о том, как вы организовываете / называете вещи. Если вы используете такие имена, как $, b $, c $ ... или g $ из Basic of old, тогда удачи. если вы называете вещи так, как вы будете думать о них, как FirstName, LastName, это будет намного проще. Многие языки имеют стандарты именования, которые также помогают. В Java, например, существует соглашение setX, getX для получения / установки определенных атрибутов класса, а также соглашения об использовании заглавных букв. Итак, если вы знаете, что у человека есть имя, то оно, вероятно, называется firstName, а getter / setter - это, вероятно, getFirstName и setFirstName ..... Так что эти соглашения очень помогают ...
Кроме того, более короткие методы / функции помогут вам держать меньше в голове одновременно. И использование собственных имен поможет вам не искать. Например, если вы называете вещи для того, что они делают, то при чтении одной процедуры, которая вызывает getMaximumValue, вам, вероятно, не нужно будет читать getMaximumValue, чтобы выяснить, что он делает ... Но поскольку функции / методы становятся длиннее и больше вложенными, чем лучшая память определенно помогает.
Память не так уж важна. Если вас это беспокоит, я регулярно забываю свой кошелек или ключи в моем доме по утрам. Я называю всех по неправильному имени хотя бы один раз (включая мою семью и подругу). Я просто забываю делать вещи по дому все время.
В конце концов, принципы программирования все еще будут в вашей голове, как «вы никогда не забудете, как ездить на велосипеде». Конкретные детали и детали реализации не так уж важны. Вы всегда можете гуглить те.
От Joel On Software о производительности программиста
Производительность зависит от способности одновременно обрабатывать множество мелких деталей в краткосрочной памяти .
Таким образом, кратковременная память очень важна для программиста, которому дано критическое задание.
Но я не думаю, что долговременная память так важна.
Из быстрого прочтения я не увидел никого, кто говорил бы о памяти в общем смысле программирования, а не об особой задаче написания программы.
Память полезна для двух вещей:
Вспоминая базовую семантику / библиотеки:
Это легко вытесняется повторением и Google. Итак, объем памяти, с которой вы родились, должен быть смехотворно низким, чтобы не справиться с этой проблемой.
Запоминание контекста в больших программах:
Вот где хитрость. По мере того как программы становятся больше (и вы становитесь старше), решения, которые вы принимаете, полностью связаны с объемом ваших знаний о системе и способностью извлекать ее за считанные миллисекунды, если она будет полезна при обсуждении проектов, отладке, реагирование на непредвиденные обстоятельства и т. д. Когда наступает решающий момент, никакое количество документации / вики-записей не поможет вам - «волшебник» вашей команды будет вашим единственным вариантом. Это одна из причин, почему главных инженеров так ценят / платят. Большинство из них могут не тратить все свое время на самом деле на кодирование, они тратят больше времени на то, чтобы быть в курсе полной картины и применять ее для любых проблем / улучшений. Хорошие просто поддерживают связь, выполняя тонну CR и меняя кодирование тут и там / прототипирование новых версий.
Итак, вы можете быть разумным программистом с одним # 1, но если вы когда-нибудь станете следующим Линусом, вам лучше иметь много памяти, по крайней мере, достаточно, чтобы охватить проблему, которую вы решаете.
По моим наблюдениям я даже могу сказать, что рабочая память почти прямо пропорциональна ценности человека.
Небольшой отказ от ответственности: если у вас есть память Eidetic, но интеллектуальная сила при применении этой логики нулевая / низкая, вы не будете иметь ничего хорошего для проекта, чем камера.
Если вам трудно помнить имена людей, с которыми вы встречаетесь, вы все равно можете стать великим программистом.
Я постоянно забываю имена людей. Я старший программист с почти десятилетним опытом работы. В моем случае моя ужасная слуховая память компенсируется отличной зрительной памятью.
Тем не менее, основным требованием для хорошего программиста является умение абстрагироваться. Неважно, сколько или мало вы помните, если вы не можете понять концепцию переменной и то, как ее использовать в программе, вы не станете хорошим программистом.
Я предлагаю вам пройти один короткий курс по программированию или пройти курс обучения Python, чтобы увидеть, как вам это понравится.
Это должно дать вам хорошее представление о том, является ли программирование карьерой, в которой вы можете быть заинтересованы.
Я говорю решительное ДА!
В настоящее время я изучаю JAVA & C #. Все тесты закрыты, поэтому для JAVA все это на 100% от памяти, кодирующей все приложения на экзаменах.
Более того, становится все сложнее и сложнее. Сейчас я нахожусь в точке, где мне нужно начать использовать приемы памяти, такие как мнемоника и т. Д.
Я бы сказал, что высокий IQ, хорошие общие знания, хороший словарный запас, полиматизм, знание высшей математики, сенсорный набор текста и хорошая память - все это активы программиста.
Я знаю очень умных программистов, которые не умеют касаться шрифтов или более высокой математики и т. Д. Если бы они это сделали, они могли бы быть намного лучше.