Подтвердить что ты не робот

Как долго нужно, чтобы кто-то мог набирать код из памяти?

Я понимаю, что на этот вопрос можно ответить простым предложением и что его можно рассматривать как субъективное, однако я молодой студент, который заинтересован в продолжении карьеры в программировании и задался вопросом, сколько времени вам потребовались некоторые из вас доходите до уровня вашего опыта сейчас?

Я спрашиваю об этом, потому что в настоящее время я работаю над созданием приложения в Java на платформе Android, и это беспокоит меня, что мне постоянно нужно искать способ написания определенного раздела кода в моем приложении, например, запись в базу данных, или как должен быть структурирован оператор if.

Мой вопрос в том, сколько времени вам потребовалось, чтобы стать достаточно опытным, чтобы точно узнать, как будет выглядеть ваша следующая строка кода, прежде чем вы его даже написали?

4b9b3361

Ответ 1

Я был программистом на С++ последние 20 лет. Мне потребовалось столько времени, чтобы добраться до этого уровня экспертизы. Я в основном программист Windows, и я постоянно держу msdn website на одном из моих мониторов.

Не важно, как долго вы это делаете. Вы никогда не узнаете все из памяти. Не потейте.

Ответ 2

Скорость, с которой вы можете быстро вызвать языковой синтаксис, общие функции библиотеки и образцы лучшей практики, прямо пропорциональна количеству времени, которое вы тратите на них.

Другими словами, вы обнаружите, что становитесь быстрее, чем больше вы это делаете.

Ответ 3

Я программировал почти половину своей жизни, и я не всегда могу вспомнить простой синтаксис, не говоря уже о целых дорожках кода для более сложных задач. Если вы спросите меня, для чего нужны справочники и Google.

Более важным навыком является общее знание программирования на любом языке, то есть рекурсия, цикл, объектно-ориентированный дизайн, работа с API-интерфейсами, обработка ошибок и т.д. После того, как у вас все это будет, вы можете применить его на любой язык и платформу.

Ответ 4

Я могу вам сказать, что через 25 лет есть строки кода, которые я не знаю, как они будут выглядеть.

Хотите пример? Я программирую на Java с прошлого века, и я могу честно по-прежнему ошибаться, если бы я набирал hashcode() или hashCode().

Почему? Потому что на самом деле типизировать такой метод имя себя так в прошлом веке. Ваше намерение состоит в том, чтобы переопределить метод Object hashCode(), поэтому вы используете программирование по желанию.

Вы нажимаете Ctrl-O, затем h, и вы получаете список методов, начинающихся с "h", которые вы можете переопределить. Затем вы нажмете enter. В качестве бонуса для вас также добавляется "@Override".

4 клавиши. 4, чтобы получить следующее:

@Override
    public int hashCode() {

    }

И честно говоря, имеет ли hashCode верхний регистр "c" или нет... Мне было все равно. Это не то, что имеет хэш-код, и мое намерение не знать все языки несоответствий и дизайнеры API. Мое намерение состоит в том, чтобы переопределить метод, который возвращает объект hashcode, и моя (современная) IDE позволяет мне получить этот скелет в четыре нажатия клавиш, включая нажатие enter.

Другой пример: есть люди, которые действительно набирают это бесчисленное количество раз в день:

for (int i = 0; i < ; i++) {

}

или более сложным:

for (int i = ; i >= 0; i--) {

}

Обратите внимание, что в последнем случае я все еще могу испортить и набирать "i ++" вместо "i--" ( "thinko" в качестве его имени).

Но мне все равно, потому что я набираю "fi <tab> " (три клавиши), и я получаю первый или "fir <tab> " (четыре клавиши, "для я (in) reverse" ), и я получаю второй. Вы не избиваете это (особенно видно, что я машинка для прикосновения, поэтому я набираю эти три или четыре клавиши быстро). В дополнение к скорости, в качестве дополнительного бонуса автозаполнение не испортит вам "i--".

Во многих случаях я точно не знаю, какую строку я получу: уверен, я знаю это "более или менее" и точно так, как должно быть.

Ответ 5

Не слишком сильно потейте. Как говорили другие, в конечном итоге становится легче писать код, не глядя на вещи так сильно, как вы работаете с определенным языком с течением времени.

ОДНАКО Есть несколько причин, по которым даже ветеран-программисты постоянно используют справочный материал:

(1) В отличие от многих лет, большинство проектов теперь требуют, чтобы вы использовали несколько языков для выполнения работы. Например, для одного веб-сайта, веб-сайт может требовать от С#, XML, JavaScript, SQL, HTML, XHTML, RegEx и CSS всех в одном проекте. Переключение между некоторыми из этих языков может иногда вызывать вас за цикл, потому что многие из них достаточно похожи, чтобы быть знакомыми, но достаточно разными, чтобы вы забыли тонкие различия в синтаксисе.

(2) Когда вы начнете получать удобство, чтобы вы знали язык внутри и снаружи, поставщик выпустит новое обновление, которое изменит все, что вы знали об этом. Например ASP- > ASP.NET.

Я все еще довольно часто просматриваю простые вещи, и я занимаюсь этим почти 20 лет. Важно то, что вы понимаете основные понятия и принципы.

Ответ 6

Мне потребовалось 12 лет, чтобы добраться, где я нахожусь сегодня, и это мой опыт профессионального программирования. Вы всегда будете улучшаться при работе с некоторым языком программирования, даже если вы работаете с ним последние 5 лет.

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

Но когда вы доберетесь туда, не останавливайтесь!

Ответ 7

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

Я занимаюсь кодированием в течение 15 лет и занимаюсь С# в течение последних трех, и я все еще использую справочный материал MSDN каждый день. Однако, что касается основных строительных блоков языка, я запомнил их в первый месяц или два.

Кроме того, чем чаще вы кодируете код, тем лучше вы его передадите в память.

Ответ 8

Здесь мне кажется ложное предположение...

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

Таким образом, вместо того, чтобы брать недели или месяцы, чтобы вернуться к точке, где я могу написать 80% кода из памяти, требуется несколько или несколько дней (если это иногда). Я программировал около 5 лет. Я только сейчас хочу понять, как можно в полной мере визуализировать небольшие приложения.

Пока вы работаете над решением проблемы, которую вы еще не решили (много раз), вам, вероятно, всегда придется искать код.

Если это можно сделать, я предполагаю, что для большинства людей требуется больше 5 лет, если только они не работают на одном языке с одним редактором и в одной области. (например: С#, Visual Studio, операции с файловой системой). Моя компания недостаточно велик, чтобы сотрудничать с кем-то конкретным.

Ответ 9

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

С течением времени (с опытом) вы можете вспомнить об этом с головы, но на самом деле нет ничего плохого в том, чтобы быстро обсудить документацию, чтобы обновить память.

Также помните, что технология постоянно меняется, поэтому хорошо держать ум свежим с новыми способами мышления/способами делать что-то.

Ответ 10

Вопрос не на 100% ясен. Один из лучших программистов, которых я знаю, ничего не помнит и должен ежедневно искать строки форматирования printf. С другой стороны, если вам сложно определить, как записать цикл for (int я = 0; я < len; я ++) после этого в течение 6 месяцев - это звучит не так.

Ответ 11

идея о том, что каждый бит кода из одного языка, а затем явно из памяти, довольно далеко. количество предопределенных функций для, скажем, PHP или Java, огромно.

но, как говорится, важно изучить структуры программирования и узнать их все, что вы можете. структуры, такие как foreach, если тогда еще, переключатель и т.д. - это действительно то, что необходимо тщательно интегрировать. также, концептуальные вещи, такие как Object Orientation (не просто "использование" таких объектов, как mysqli, но понимание таких вещей, как управление кодом, код клиента, снизу вверх и сверху вниз) - это настоящие вещи, которые делают хороших программистов отличным. для себя я знаю, что у меня нет способности изучать каждую определенную функцию, предоставленную языковыми писателями, поэтому я вместо этого узнаю, можно ли это сделать (и, конечно же, по-прежнему пытайтесь делать то, что не может быть сделано, LOL), если вы это знаете, то это вопрос Google и книг, чтобы найти "конкретные" механизмы для того, как.

приветствует моего друга.

Ответ 12

Не ответ сам по себе, но я просто хотел сказать, что как начинающий сам, этот q & a - одна из самых полезных вещей, которые я прочитал на SO. Кажется, что да, эксперты могут, вероятно, скопировать основные вещи из памяти, но даже они возвращаются к книге для сложных проблем и для новичков, для чего предназначена книга.

Мне кажется, что я только начинаю

Ответ 13

Вы должны использовать фрагмент кода, если несколько раз используете определенный фрагмент кода. Я не беспокою меня, если не могу вспомнить какой-то фрагмент кода из памяти.

Ответ 14

Для меня это сильно зависит от того, что я пишу. Например, я сомневаюсь, что большинство людей когда-либо запоминают все параметры для некоторых функций Windows. Я знаю, что мне нужно называть CreateFile на следующей строке, но не знаю всех параметров, пока они не набраны (с помощью Intellisense, а иногда и MSDN).

С чем-то, что делает простые вычисления, я, скорее всего, ограничусь скоростью ввода (но я довольно плохой машинисткой, поэтому думать быстрее, чем я могу печатать, не так много).

Это означает, что это действительно вопрос о том, сколько времени вам нужно сослаться на что-то, чтобы набрать следующую строку кода - сначала это довольно небольшой процент, и со временем он растет. Я сомневаюсь, что он когда-либо добирается до 100% для кого-либо. Я, например, не думаю, что хочу этого - это означало бы, что я не работал над новыми и разными вещами...

Ответ 15

Если вы используете eclipse и java, вы можете оказаться там уже там.

Другие комбинации могут быть немного медленнее и медленнее.

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

Также всегда подчеркиваются ошибки синтаксиса.

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

Ответ 16

Я не знаю о запоминании. Повторение - это мать всего обучения, и это относится ко всем аспектам жизни. Посмотрите на опытного бухгалтера против новичка при подаче налогов, который больше смотрит на вещи. Но то, что я недавно обнаружил, - это то, что я гораздо быстрее перебираю документацию и имею смысл сразу перейти к тому, на что отвечает мой вопрос. Я получил 6-й смысл - я вижу код! Серьезно, все это приходит с опытом. Тем не менее, при изучении чего-то совершенно нового, нет никакого стыда в поиске того, как делать определенные вещи. То, что отделяет людей от правды, учится у других. Чем больше вы работаете над чем-то, тем лучше становитесь.

Ответ 17

Я программирую Java сейчас около 5 лет, и я никогда не испытывал никаких проблем с запоминанием синтаксиса. Я могу <brag> писать почти все java.util. *, java.io. *, java.lang. * и javax.swing. * вещи из моей памяти </brag> , но это мне помогает? Не очень много. Это не делает меня лучшим программистом, чем тот, кто не может!

Я использую Netbeans, что очень помогает работать с библиотеками. Кроме того, документация, только там, где она вам нужна. Иногда это совершенно не нужно, но иногда вам хотелось бы, чтобы экран "автозаполнения" быстрее появлялся!

Лучше всего, как студент, сосредоточиться на том, что вы делаете, а не на том, как быстро вы это делаете. Взгляд на вещи неплох; так как это поможет вашему так называемому процессу "бессознательного ума", что вы действительно пытаетесь достичь. Наличие таких перерывов, например. просматривая определенную документацию или ссылку на синтаксис, может даже позволить вам лучше программировать (для этого нет доказательств).

Вопрос довольно субъективен.

Ответ 18

Абсолютно ничего плохого в том, что приходится искать документацию каждый раз, когда вы хотите написать какой-то код. Мне повезло, что когда я использую определенную функцию, я не забываю ее очень легко. Однако большую часть времени, особенно когда я кодирую на языке, который я не использовал некоторое время,

  • Я начинаю писать блок-схему алгоритма, который я хочу кодировать, - только чистая логика. Важнейшей причиной для этого является то, что я не теряю свою мысль и забываю алгоритм, который решает мою проблему в разгар технических проблем, таких как синтаксис, какие функции библиотеки существуют? >
  • Затем я просматриваю документацию и проверяю, есть ли простые вызовы функций, которые помогут мне выполнить каждую задачу в моем алгоритме.
  • Если таких функций не существует, то я либо модифицирую свой алгоритм, чтобы учесть, какие функции язык предоставляет или записывает вспомогательные функции, заполнить пробелы.
  • Я только начинаю кодирование СЕЙЧАС, что не так сложно сделать, потому что у меня уже есть все соответствующие функции, записанные. Итак, теперь это просто вопрос перевода чистой логики в синтаксически точный код.

Правильный синтаксис, как правило, не ускользает от меня, но если это произойдет (очень редко), Google предоставляет очень красивые фрагменты кода, если вы попросите приятного.

Надеюсь, что это поможет

Пусть Сила будет с вами

Ответ 19

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

Тем не менее, если у вас нет "жажды" для того, как материал все время работает по отношению ко всему, вы не пойдете далеко. В этой области вам действительно нужно иметь страсть к тому, что вы делаете, чтобы быть здоровым.

Ответ 20

... Меня беспокоит, что я постоянно должен смотреть на вещи... Сколько времени вам нужно, чтобы добраться до того уровня, на котором вы сейчас находитесь?

Для меня и для большинства учеников, которых я преподаю, ответ зависит от двух переменных:

  • Сколько строк кода я написал?
  • Я использую язык или библиотеку каждый день?

(Чтение кода других людей очень полезно для изучения языка и обучения тому, как думать на языке, но, по крайней мере, для меня это не помогло мне стать свободным автором программ на языке. что.) Итак, мой первый комментарий заключается в том, что время должно измеряться в строках написанного кода, а не в часах или годах. (Рэй Брэдбери однажды посоветовал устремленным писателям вымысла написать тысячу слов в день шесть дней в неделю, а после того, как они написали миллион слов, они могут начать что-то знать о своем ремесле. Это хороший совет для программистов тоже.)

Что касается моего собственного опыта, то через полдюжины языков, которые я в настоящее время хорошо знаю или когда-то хорошо знал, для меня было довольно непротиворечивым, что

  • После написания 100 строк я постоянно смотрю вещи в руководстве и не знаю, что я делаю.
  • После написания 1000 строк я иногда использую руководство и начинаю изучать , как думать на языке.
  • После написания 10 000 строк я так же хорошо, как и собираюсь, не прилагая особых усилий.
  • После записи 25 000 строк мне, вероятно, больше не понадобится руководство.

Также верно, что

  • Чтобы научиться писать 100 строк, мне пришлось читать от 100 до 1000 строк, которые кто-то написал.
  • Для первых 1000 строк я пишу, мне хорошо читать 2000 строк, которые кто-то написал. Для следующих 1000 строк мне хорошо читать 1000 строк, которые кто-то написал.
  • После того, как я написал 5000 строк, я больше всего изучаю код чтения, написанный мировыми экспертами, или людьми, которые разработали язык и поняли, что там есть. Мне больше нечего учиться, читая только любую программу.

С другой стороны, мой опыт в отношении того, когда я перестаю постоянно ссылаться на документацию, гораздо менее последователен. Я нахожу это особенно сложным, когда два языка очень похожи; Я никогда не перестану нуждаться в руководстве ksh, чтобы рассказать мне, что отличается от sh или bash, и я никогда не перестану нуждаться в руководстве Haskell, чтобы рассказать мне, что отличается от стандартного ML (хотя потребность увеличивается с каждым дополнительным 1000 строк из Haskell, который я пишу). Мне также интересно, что, хотя я написал более 35 000 строк кода Lua, и мне больше не понадобится руководство для языкового вопроса, мне приходится искать библиотеки и функции API почти каждый раз, когда я пишу что-то длиннее 500 строк. (Я написал много коротких программ Lua и пару длинных, и я не использую этот язык каждый день, хотя я определенно использую его по крайней мере несколько дней каждый месяц.)

Что касается невысказанного вопроса, когда вы лично собираетесь поправляться?, возьмите несколько советов Уоттс Хамфри: measure свою собственную производительность и отслеживать ее с течением времени. Я думаю, что если каждый день вы подсчитываете количество раз, когда вам приходилось останавливаться и смотреть на вещи, и график, который против количества строк кода, написанных или отредактированных (которые вы можете получить из управления исходным кодом), вас приятно удивит объективные доказательства улучшения. И я думаю, что как только у вас появятся такие доказательства, вы сможете больше сосредоточиться на продолжении совершенствования, а не на том, где вы сейчас находитесь или где вы надеетесь быть через год.

Ответ 21

Верно, что после нескольких лет программирования вы сможете запомнить много вещей, не проверяя "руководство". Для меня это не важная веха в вашей жизни программирования, но действительно важный момент - когда вы достигаете точки, где вы не знаете, как что-то делать... но вы уверены, что это можно сделать, и вы знаете, где и как исследовать его: -)

Вы сделали очень важный шаг, участвуя в этом сайте. Обмен идеями и помощь друг другу - отличный способ обучения.

Ответ 22

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

Как говорили другие, хорошее программирование - это не написание кода из памяти; о распознавании паттернов, понимании систем, решении проблем. Это о выборе правильных инструментов для работы (языки, библиотеки, алгоритмы и т.д.) И возможность их правильного использования. На всех работах, которые у меня были, это о гибкости и гибкости; вам, возможно, придется изучить новый язык или забрать завтра еще плохо документированный код, и хороший программист сможет принять это в своих шагах.

Ответ 23

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

Тем не менее, есть несколько бит обычного кода, которые я использую все время, но могу рассчитывать с одной стороны на количество раз, которое я написал, - точный синтаксис для заполнения набора данных в .Net, например. Одним из навыков, которые я больше всего ценю за это время, и который экономит мне больше всего времени, - это определить, когда некоторый код можно быстро и легко переместить в библиотеки утилиты. Если это неудобно, но рутинно, рассмотрите этот подход, чтобы сэкономить на себе и улучшить общее качество кода.

Ответ 24

В контексте этого вопроса; java, С++, javascript языки все еще развиваются. Я не могу сказать о других языках.

  • Язык/спецификация языка изменяется со временем
  • Библиотеки добавляются в дополнение к языковым конструкциям, например, Boost, Google Collections, Apache Commons, jQuery
  • Приложения редко привязываются к одному аспекту языка.
  • Во всех организациях/проектах изменение стандартов кодирования
    • Проект, над которым я работал, рекомендовал использовать примитивы
  • Когда вы не знакомы с используемыми конструкциями, я сначала помещаю псевдокод с флагом //TODO.. затем зайдите и найдите фактический API для использования.

ИМО, ответ на ваш вопрос - нет определенного ответа.

Ответ 25

Как программист на Java, размер библиотеки времени выполнения не позволяет запомнить все. Swing большой, есть движок XSLT (который содержит два языка), поддержка Concurrent развивается и растет.

Прямой доступ к Javadoc API из Eclipse в сочетании с завершением кода позволяет найти информацию, которую вы не можете запомнить, но вы знаете, что она существует, быстро и эффективно.

Я нашел javaalmanac.com(который был переработан в более запутанную http://www.exampledepot.com/egs/index.html), бесценную в представлении коротких, кратких и прежде всего правильные программы, выполняющие только одну маленькую вещь. Настоятельно рекомендуется.

Ответ 26

В большинстве недель я программирую на Java, С#, Python, PHP, JavaScript, SQL, Smarty, Django Templating, а иногда и на С++ и Objective C. Я студент, поэтому это частично школьная работа и частично моя неполная работа. Вместо изучения синтаксиса я узнал, что концепции искать.

Увидеть шаблоны и концепции является ключевым, как только вы знаете понятия и что искать синтаксис является вторичным.

Я нахожу, что даже когда я просто подвергаюсь воздействию языка, я могу многое сделать, просто посмотрев "что должно быть там"

Ответ 27

Почему вы должны помнить все это? Лично я принимаю тот факт, что я не могу запомнить все это и просто попытаюсь вспомнить, где найти нужную мне информацию. Я нахожу это гораздо более полезным. Это принимает форму ведения блога, заметок, хранения большого количества "образца" кода и многоразовых библиотек и написания кода, который мне кажется полезным и интересным; ох и множество книг, некоторые из которых мне почти не нужны ", некоторые из которых я почти никогда не читал, но они были сняты, и я знаю, где они живут.

Технологии приходят и уходят, и я просто не мог сохранить все то, что однажды могу найти в моей голове; поэтому я их выставляю и просто сохраняю индекс в памяти... Например; 9 лет назад я делал некоторые вещи с Java и CORBA и все такое. Я никак не мог вернуться к этому без комментариев, которые я написал для своего веб-сайта, когда я это делал: http://www.lenholgate.com/blog/2001/02/corba---enumeration.html. Аналогично, у меня есть код, который я использую на ежедневной основе, начиная с 1997 года или раньше. Я не помню, как вводить его, я имею его в файле с тестами (если мне повезет) и docs (если мне даже повезет).

Пока я понимаю, что большинство из того, что я говорю, это "большой материал", мне также часто приходится искать и изучать некоторые из моих старых кодов, чтобы просто разобраться, как структурировать typedef...

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