Вне простого кодирования: Куда пойти отсюда? [закрытый]

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

, Если время будет проведено, делая вещи кроме использования ЦП, необходимо уменьшить тех сначала - ЦП легко масштабировать, другие вещи не.

Несколько операций являются особенно медленными, я нашел:

  • keys() на большом хеше очень плох
  • Использование Data::Dumper для отладки. Используя эту функцию на большой структуре является очень медленным. Избегайте его, если Вы можете. Мы видели код, который делает:

    use Data::Dumper; 
    $debugstr = Dumper(\%bighash); 
    if ($debugflag_mostlyoff) { log($debugstr); } 
    
  • Большинство модулей имеет альтернативы с различными рабочими характеристиками - некоторые буквально сосут невероятно плохо.

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

не рассматривают перезапись чего-то в C за исключением последнего средства. Вызов C от Perl (или наоборот) имеет относительно большие издержки. Если можно получить быструю реализацию Perl, это лучше.

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

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

11
задан theycallmemorty 13 July 2009 в 17:16
поделиться

16 ответов

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

ИЗМЕНИТЬ после комментария: Если это слишком сложно для вас, попробуйте начать «настоящий» проект. Я говорю «реально», потому что это должно быть то, чем вы хотите заниматься, а не «создать блог» или «как сделать цикл». Например, в прошлом году я создал полнофункциональную систему управления проектами, которую сейчас использую для некоторых своих проектов. Если это реально, у вас будет больше мотивации и вы захотите это сделать.

Выберите для этого технологию, которую вы хотите. Я бы порекомендовал Ruby on Rails , потому что он потрясающий и полон интересных концепций, которые улучшат способ кодирования сверхурочно (DRY, RESTful, MVC ...) ... но вы можете выбрать все, что хотите.

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

Поскольку вы начнете проект с нуля, вы увидите, с чего начать и как он будет развиваться. Я возьму инструмент управления проектами. Мы начали с «У проекта есть задачи» и закончили со всеми другими функциями, такими как сложный календарь, полный интерфейс ajax, встроенный чат ...

Как только вы увидите, как вы это сделали, попробуйте выполнить То же самое и с вашим другом, чтобы получить представление о совместной работе над разработкой. Узнайте, как использовать SVN, basecamp ... узнайте о процессах разработки программного обеспечения ( Agile !), Равноправном программировании ..

Там ' так много опыта! Тогда вы можете еще раз попробовать открытый код.

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

8
ответ дан 3 December 2019 в 05:35
поделиться

I think the transition from the kind of finite tractable problems that are part of class projects (and some internships) to "real world" projects is quite tough. Sounds like language syntax, getting bugs out of code etc. is something you are comforatble with.

When we come to larger projects, probably with many release cycles, with developers working together, different kinds of problems emerge. I remember being shocked when I saw my first big project plan - what a small propertion of the time was actually writing code!

The thing I found helpful as a junior was "Sitting By Nelly", I was lucky enough to work for enlighted employers who put me with very experienced and helpful developers. Sometimes to work with, sometime to work alongside. I reckon that helped me get over the hurdles you describe.

So, I reckon you need to find employment of this kind. Be less concerned about specific technologies, salary etc. Look instead for the culture and level of responsibility you would have.

0
ответ дан 3 December 2019 в 05:35
поделиться

Что ж, мой совет будет заключаться в том, чтобы найти проблему / проект, который вас интересует, и попытаться закодировать его. Попытка решить настоящую проблему - это то, что вас движет. Найдите что-нибудь не слишком сложное, но и не слишком простое. При переходе на новый язык можно попробовать написать несколько инструментов. Вы можете, например, запрограммировать сценарий Python, который печатает метрики в проекте C ++. Вы можете написать инструмент, который извлекает некоторую статистику с веб-сайта, который вы используете, и т. Д. Когда я изучал программирование, программирование игр было довольно забавным (я был молод :-)). Вы можете попробовать запрограммировать какую-нибудь простую игру, используя, например, трехмерный движок Ogre3D . Участвовать в проекте с открытым исходным кодом тоже здорово, но, как вы сказали, это, возможно, пока немного ошеломляет; -)

Найдите то, что вам нравится, и это имеет для вас РЕАЛЬНО полезную цель.

0
ответ дан 3 December 2019 в 05:35
поделиться

You've got to find a particular type of functionality that interests you. For me it's been basic socket programming and making my own protocols. I got that feeling when I was able to create a functional file uploading control that worked in conjunction with a file upload service on the server which I had created. The protocol handles authentication, chunking and hash comparison. Sometime soon I plan on incorporating file-resume functionality as well.

0
ответ дан 3 December 2019 в 05:35
поделиться

Понимаете ли вы все перечисленное и как они работают?

  • Связанные списки (одиночные и двойные)
  • Последовательный и двоичный поиск
  • Двоичные деревья
  • Стеки
  • Красно-черные деревья
  • Алгоритмическая сложность и нотация большого O
  • Рекурсия
  • Хеш-таблицы и алгоритмы хеширования

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

1
ответ дан 3 December 2019 в 05:35
поделиться

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

PS: Создание программного обеспечения - это намного больше, чем просто знание того, как возиться с языком.

1
ответ дан 3 December 2019 в 05:35
поделиться

I think the best way to improve your skills as a programmer is to do what programming was intended for: solve problems. I'm sure you've been playing around on your machine and at one time thought to yourself "I wish there was a program that did this..." or "I wonder if there are any programs that do X..." Instead of just googling to see if someone else wrote it, write it yourself. Start with something small, and gradually make it more complex. Add features. Allow yourself to fail, and when you do, ask yourself (or us at stackoverflow) how to overcome that obstacle. Once you have the basics of programming, everything else is just making big things out of littler things, and the little things are usually pretty easy.

When you are making something you know you will actually use, it's more fun and more gratifying when you finish.

1
ответ дан 3 December 2019 в 05:35
поделиться

I would suggest looking at Project Euler. It's a great and fun way to learn a new language, and it does provide that level of satisfaction when you solve the problems. They offer a huge range of problems at all levels of difficulty.

1
ответ дан 3 December 2019 в 05:35
поделиться

Я бы рекомендовал попробовать чисто функциональный язык, такой как Haskell. Это совершенно другой взгляд на программирование, и я нашел его очень удовлетворительным.

Я рекомендую книгу Real World Haskell для его изучения.

Изменить: В ответ Что касается комментариев, моя интерпретация вопроса заключается в том, что он может делать дальше как программист. Функциональное программирование - логическое направление. Для тех, кто впервые изучает функциональное программирование, Haskell удобен тем, что не позволяет применять императивные методы программирования. Кроме того, он имеет практически все функции, которые вы найдете в других функциональных языках, а это значит, что будет легко выбрать другие функциональные языки.

7
ответ дан 3 December 2019 в 05:35
поделиться

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

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

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

Затем, что бы вы ни выбрали, начните с простого решения проблемы и расширьте его (например, выполните различные настройки, дополнительные функции и т. Д.) .)

0
ответ дан 3 December 2019 в 05:35
поделиться

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

Скажите им, что вы можете это сделать. бесплатно, а затем просто сделайте это. Когда вы начнете делать это, вы начнете видеть, что вам нужно изучить.

Например, недавно у меня была программа Peel www.getpeel.com на моем Mac. Но продал свой Mac за Wind, так как путешествую.

Увидев, что для Windows нет ничего (или ничего, что я не смог найти), как Peel. Я создаю свой собственный на PHP и готовлюсь к четвертой его перестройке, поскольку я изучаю лучшие способы делать каждую новую вещь, которую я изучаю.

1
ответ дан 3 December 2019 в 05:35
поделиться

Check out Design Patterns.

I believe that's beyond mere simple coding.

1
ответ дан 3 December 2019 в 05:35
поделиться

Я уже давно искал ответ на этот вопрос. Большинство предложений обычно либо помогают проекту с открытым исходным кодом, либо создают что-то, что вас интересует. Я начинаю понимать, что эти ответы расплывчаты, потому что что такое «интересный» или «ценный» опыт и как начать это делать, полностью субъективно. Кроме того, есть только один способ получить реальный опыт - работать над реальными проектами. Это сложно, но найти проект, личный, с открытым исходным кодом или какой-либо другой, который расширит ваши знания о технологии или платформе, которые, по вашему мнению, заинтересуют вас. Тогда просто копайтесь. Это не обязательно должно иметь огромную важность, просто ценно по отношению к вашим собственным целям.

0
ответ дан 3 December 2019 в 05:35
поделиться

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

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

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

Я изучил C # в своем первом проекте в моем кооперативе, и это дало мне вторую позицию в кооперативе у другого работодателя (хотел посмотреть, как это работает в небольшой компании).

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

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

Я изучил C # в своем первом проекте в моем кооперативе, и это дало мне вторую позицию в кооперативе у другого работодателя (хотел посмотреть, как это работает в небольшой компании).

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

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

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

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

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

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

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

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

0
ответ дан 3 December 2019 в 05:35
поделиться

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

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

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

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

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

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

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

0
ответ дан 3 December 2019 в 05:35
поделиться

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

0
ответ дан 3 December 2019 в 05:35
поделиться
Другие вопросы по тегам:

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