Изучение языка, в то время как на проекте?

TL; DR ответ

С очень мало исключений , это правило является золотым:

Избегайте использования !

Объявить переменную необязательной (?), неявно развернутые необязательные опции (IUO) (!)

Другими словами, лучше использовать:
var nameOfDaughter: String?

Вместо:
var nameOfDaughter: String!

Развернуть необязательную переменную, используя if let или guard let

Либо разверните переменную, как это:

if let nameOfDaughter = nameOfDaughter {
    print("My daughters name is: \(nameOfDaughter)")
}

Или вот так:

guard let nameOfDaughter = nameOfDaughter else { return }
print("My daughters name is: \(nameOfDaughter)")

Этот ответ должен был быть кратким, для полного понимания прочитайте принятый ответ

5
задан victor hugo 25 June 2009 в 00:58
поделиться

9 ответов

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

Такие вещи, как кодирование додзё и т. Д., При изучении языка могут помочь вы чувствуете вещи. Я недавно сменил работу и вернулся к Java, и я потратил некоторое время на работу над игрушечными программами, чтобы снова почувствовать себя (я также читаю Effective Java, 2-е издание, поскольку мой предыдущий большой опыт был с Java 1.4 ).

8
ответ дан 18 December 2019 в 08:30
поделиться

I like to learn a new language while working on a project, because a real project will usually force me to learn aspects of the language that I might otherwise skip. One of the first things I like to to is read code in that language, and jump in. I find resources (such as books and various internet sites) to help as I go along.

Then, after I've been working on it for a while, I like to read (or re-read) books or other resources on the language. By this time I have some knowledge, so this will help solidify some things and also point out areas where I am flat-out wrong in my understanding. For instance, I can see that I was making incorrect assumptions about similarities between languages.

This also applies to tools -- after using a tool for a while and learning the basics, reading (or skimming) the documentation can teach me a lot.

1
ответ дан 18 December 2019 в 08:30
поделиться

I think, in some respects no matter what the impetus for learning the language, you have to start by imitating good patterns in the new language. Whether that means finding a good book, with excellent code examples, good on-line tutorials, or following the lead of a more experienced developer, you have to absorb what it means to write good code in a particular language first. Once you have developed a level of comfort, you can start branching out and and experimenting with alternatives to the patterns that you've learned, looking for ways to apply things you've learned from other languages, but keeping within the "rules" of the language. Eventually, you'll get to the point where you know you can 'break the rules" that you learned earlier because you have enough experience to know when they do/don't apply.

My personal preference, even when forced to learn a new language, is to start with some throw away code. Even starting from good tutorials, you'll undoubtedly write code that later you will look back on and not understand how stupid you could have been. I prefer, if possible, to write as my first foray into a language code that will be thrown away and not come back to haunt me later. The alternative is to spend a lot of time refactoring as you learn more and more. Eventually, you'll end up doing this, too.

4
ответ дан 18 December 2019 в 08:30
поделиться

Я хотел бы упомянуть здесь ALT.NET.

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

Таким образом, в духе ALT.NET сложно, но полезно выйти за пределы своей зоны комфорта, чтобы изучать новые языки. Вот некоторые вещи, которые действительно помогли мне:

  1. Понимать историю языка или алфавита. Знание эволюции очень помогает.
  2. Выберите правильную книгу. Изучите StackOverflow и Amazon.com, чтобы найти нужную книгу, которая поможет вам облегчить проблемы роста.
  3. ООП довольно распространено в большинстве зрелых языков, поэтому вы можете пропустить многие главы, связанные с ООП, во многих книгах. Изучение синтаксиса будет постепенным процессом. Я обычно добавляю в закладки несколько удобных руководств для этого.
  4. Читайте как можно больше форумов сообщества, чтобы понять общие подводные камни нового языка.
  5. Посещайте несколько местных встреч, чтобы пообщаться с сообществом и поделиться своей болью.
  6. Делайте шаг за шагом, создавая небольшие не такие сложные приложения и тем самым набирая обороты.
  7. Убедитесь, что вы создали основу для того, что вам нужно изучить. Такие вещи, как безопасность, ведение журнала, многопоточность.
  8. Будьте открыты, вы можете критиковать, но если вы что-то ненавидите, не учите этот язык.

Наконец, я думаю, что стоит выучить один сильный язык как C # или Java, один функциональный язык и один язык сценариев, например ruby ​​или python.

3
ответ дан 18 December 2019 в 08:30
поделиться

Я изучил PHP после того, как меня наняли руководителем проекта Zend Framework.

Помогло то, что у меня был 20-летний опыт профессионального программирования и хорошее знание C, Java, Perl, JavaScript, SQL, и т.д. Я также большую часть своей карьеры тяготел к динамическим языкам сценариев. Я писал приложения на awk, фреймворки в оболочке, макропакеты в troff, я даже писал форум, используя только sed.

Что поможет выучить язык на работе:

  • Чтение кода и документации.
  • Прослушивание списков рассылки и блогов сообщества.
  • Общение с экспертами по языку, к счастью, некоторые из которых были моими непосредственными товарищами по команде.
  • Написание практического кода и просили о проверке кода и обучении. ( Zend_Console_Getopt был моим первым значительным вкладом в PHP).
  • Изучение инструментов, связанных с языком. PHPUnit , Xdebug , phpDoc , phing и т. Д.

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия одного языка часто просто идиоматичны, это способ заявить о чем-то, что можно сделать по-другому на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Xdebug , phpDoc , phing и т. Д.

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия одного языка часто просто идиоматичны, это способ заявить о чем-то, что можно сделать по-другому на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Xdebug , phpDoc , phing и т. Д.

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия одного языка часто просто идиоматичны, это способ заявить о чем-то, что можно сделать по-другому на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия одного языка часто просто идиоматичны, это способ заявить о чем-то, что можно сделать по-другому на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Конечно, я применил то, что знал из других языков программирования. Многие концепции информатики универсальны для языка. Различия одного языка часто просто идиоматичны, это способ заявить о чем-то, что можно сделать по-другому на другом языке. Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

Это особенно верно для таких языков, как Perl или PHP, которые заимствуют множество идиом из более ранних языков.

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

2
ответ дан 18 December 2019 в 08:30
поделиться

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

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

Ура.

0
ответ дан 18 December 2019 в 08:30
поделиться

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

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

Например, я бы сказал, что опытный программист на C # без опыта работы с VB, вероятно, переживет Проект VB.NET в порядке. Фактически, это будет сложнее для разработчика, имеющего опыт работы только с C # / ASP. NET для завершения проекта C # WPF, а не проекта VB ASP.NET. Опытный разработчик PHP может немного колебаться в отношении проекта ColdFusion, но он, вероятно, не совершит серьезных ошибок, потому что он знаком с архитектурой веб-разработки на основе скриптов.

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

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

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

1
ответ дан 18 December 2019 в 08:30
поделиться

Да, есть.

Я имею в виду, есть ли другой способ? Единственный язык, который я когда-либо выучил, которого не было в проекте, был ABC basic, который вы использовали на моем первом компьютере.

0
ответ дан 18 December 2019 в 08:30
поделиться

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

0
ответ дан 18 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: