Ответы пользователя по тегу Языки программирования
  • Как стать Middle после Junior и Senior после Middle?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сколько нужно мне проработать в организации чтобы стать Middle если сейчас я Junior?


    я видел людей которые за 5 лет в "организации" настолько остановились в развитии что как были джунами так и оставались.

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

    Вот и прикидывайте.
    Ответ написан
  • Имеет ли смысл начинать с Си?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Плюсы:

    Си это сила. У него пока нет конкурентов в системном программировании (разве что rust подкрадывается и D, но они чуть на другие вещи ориентированы).

    Минусы:

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

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

    Если же вас интересуют более мэйнстрим вещи вроде web или мобильная разработка - проще сразу брать какой-нибудь современный динамический язык (python, javascript) и радоваться жизни.
    Ответ написан
  • Какой язык выбрать в качестве основного?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мне 14 и я встал в тупик!


    Вам 14, это нормально.

    Я собираюсь стать программистом

    Какой язык выбрать в качестве основного?


    Английский. Начните с него.

    web-dev в качестве серверного языка выбирают PHP, Python,

    А как же Ruby? Go? Javascript + Node.js? Erlang?

    Для системного администрирования Python,

    Да как-то даже Perl еще юзают.

    Для создания приложений C#,C++,Python.

    Java!, Kotlin, Scala, DLang, Rust, Go... Да и приложения разные бывают.

    Какой язык используете вы, и что посоветуете мне?


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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ммм.... зависит от задачи. Из вашего описания вам нужен один бэкэнд разработчик (ruby) и один фронтэнд разработчик. Либо фулстэк, коих мало нормальных в такой комбинации (да и в любой другой).

    Что должен уметь бэкэндер - настроить окружение, возможно штуки для автоматизации (ansible/puppet), должен знать что такое и зачем нужен vagrant (то что разработка на mac os ничего не значит, деплоиться вы будете на линукс, и выкиньте дурные мысли о использовании соляриса). Может быть docker... но это уже пусть девелопер решает.

    Вместо apache по умолчанию берем nginx, вместо mysql может быть postgresql, может вам еще elasticsearch придется вкатить... в зависимости от задачи выбираются базы данных и прочий мусор. Это все всего-лишь инструменты.

    Отдельно хочу заметить что помимо того что девелопер должен знать что такое "Agile Software Development", это так же должны знать вы. И это не скрамы/канбаны, хотя это тоже полезно. Лучше пусть у человека здравый смысл будет.
    Ответ написан
  • Какие ресурсы "экономить" при алгоритмизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    и увеличить при этом количество переменных

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

    Да и вообще, все очень зависит от языка программирования и компилятора.

    По самим алгоритмам можно только предсказать сложность на очень больших объемах данных и исходить из этого.
    Ответ написан
  • Есть ли основные правила супер оптимизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Главное правило оптимизации - не заниматься преждевременной оптимизацией.

    Вообще все просто - пишите код, пишите нагрузочные тесты, профилируете, оптимизируете узкие места. С опытом ляпов будет меньше изначально. Ну и книжки стоит читать всякие, желательно обобщенные (типа там паттерны проектирования и т.д.) что бы можно было вместо оптимизации просто быстро систему масштабировать (это дешевле). Ну и еще теория алгоритмов помогает, если у вас есть именно обработка больших объемов данных (массивы на миллионы айтемов, на тысячах пофигу обычно)
    Ответ написан
  • В каких университетах преподают javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если и преподают, то не больше семестра. По сути пол года хватит для "углубленного" JS. Вопрос в сфере применения.
    Ответ написан
  • Что такое хорошая и плохая система типов в ЯП?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет такого понятия. Есть субъективное мнение большинства что Rust реализовали систему типов очень красиво и элегантно. Так же существует распространенное мнение что Go - плохо спроектированный язык и вообще он уродлив, приводя довольно неплохие доводы, но иногда странные. Кто-то жалуется что в go нет дженериков, кто-то сетует на синтаксис.... словом... субъективизмы.
    Ответ написан
  • Дайте совет по поводу языка программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если вы разберетесь с Java - разобраться с Php проблем не составит. А еще есть c#, который похож на Java только лучше. Да и с учетом того что есть mono с кросплатформенностью проблем не будет.

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

    Если захотите попрактиковаться - перепишите Jenkins.
    Ответ написан
  • C# to Java или Чего стоит выучить новый язык, зная прежний?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну выучить Java хорошо зная c# не сильно сложно.

    Что бы стать крутым .NET-чиком нужно (да и Java-разработчиком и вообще) стоит:
    - понимать как работает CLI (или JVM, короче понимать что такое рантайм и как он устроен).
    - понимать как работает компьютер (можно почитать например архитектуру ЭВМ Таненбаума). Мол понимать что есть еще такие волшебные вещи как кеши процессора, реордер буферы, векторные инструкции, предсказание переходов, как работают потоки и т.д. Вы должны понимать что все это

    Собственно последний пункт говорит о том что вы можете писать на Си. Так сказать практическое применение знаний. Пописать потоко-безопасные lock-free структурки например (это у вас не сразу будет получаться). Ну как-то так...
    Ответ написан
  • Как объединить массивы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как-то так?
    function merge_ordered(array $a, array $b) {
       $aLen = count($a);
       $bLen = count($b);
       $resultLen = $aLen + $bLen;
       $result = new SplFixedArray($resultLen);
       for(
          $i = 0, $aIdx=0, $bIdx=0;
          $i < $resultLen;
          $i++
       ) {
          if ($aIdx === $aLen || ($bIdx < $bLen && $a[$aIdx] > $b[$bIdx])) {
             $result[$i] = $b[$bIdx++];
          } else {
             $result[$i] = $a[$aIdx++];
          }
       }
    
       return $result; // Ахтунг SplFixedArray вместо array!
    }


    На самом деле профит от этого имеется только когда массивы имеют размеры под миллион. Скажем на входных массивах в 100К элементов выигрывает таки array_merge + sort. А вот на 2 миллионах элементах в результирующем массиве выигрывает уже наша реализация.

    Подумал... а может SplFixedArray и не нужен... сделал простенький бенчмарк, $a и $b по ~500К элементов. Попробовал отказаться от toArray в результате. По сути он не особо нужен... тут вам решать. Так же добавил решение @Tyranron.

    https://gist.github.com/fesor/7511dd6c775b36a47226
    Ответ написан
  • Какой мне выбрать ЯП для написания приложения для Android и iOS в моём случае?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    phonegap + ionic framework, если я правильно понимаю что будет из себя представлять приложение, то как раз таки тут phonegap профитно использовать, так как это будет дешевле чем любой из перечисленных вами вариантов и всеравно юзабельно.

    Может быть это вопрос подобный этому - какую CMS выбрать?

    Да, и ответ будет "никакую". Все от цены зависит. На том же Xamarin смысла не вижу писать подобное. С Phonegap вы сможете сэкономить хотя бы 30% бюджета, чем если выбирать нативные для платформы языки (objective-c и java). Хотя лучше конечно именно на них и писать, просто получатся два разных приложения и скорее всего их будут делать два разных человека.
    Ответ написан
  • В чем состоит предназначение языка программирования Go?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Go - язык общего назначения. Перспективы у языка хорошие, и для WEB он подходит более чем. Основное назначение GO, как по мне, распределенные приложения и приложение ориентированные на массовый паралелизм. На нем удобно писать разного рода демоны, REST апишки (можно реализовывать узкие места к примеру), обработка I/O. Как примеры использования, самые популярные, можно привести Docker, skydns и т.д.
    Ответ написан
  • На каком языке программирования написан сайт duolingo.com?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сервер - Ruby, но там мало интересного. Все веселое на стороне клиента (javascript).

    Узнать можно по заголовкам вида X-Runtime или X-Powerd-By. К сожалению последний на этом сайте скрыт, а вот X-Runtime вроде как похож на тот что выплевывает RoR.
    Ответ написан
  • Как осуществить 3d редактор модели человека в браузере?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Единственный пожалуй нормальный вариант: WebGL + полифилы для легаси браузеров или фэлбэк для flash.

    По поводу же мобильных устройств - то либо писать нативные клиенты либо просто забить.

    Вообще задача интересная, но сложная (учитывая, я так понимаю, что с 3D графикой и анимацией вы не работали) и кропотливая. Можно взять three.js, к которому есть массы статей и по скелетной анимации персонажей, и вообще по деформации объектов.
    Ответ написан
  • Какие инструменты, технологии для web-разработки вы используете?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Попробуйте поработать под linux (Debian/Ubuntu), ибо для разработки под WEB удобнее ничего увы нет (если только вы не .NET программист).

    Из backend-фреймворков - Silex/Symfony/Zend, другие даже не стоит смотреть первое время, можно перейти в любой момент после одного из этих трех, зато сразу уменьшается вероятность написать что-то не правильно, не красиво... Хотя и с Symfony сделать глупость можно, если постараться, но во всяком случае эти фреймворки стараются учить хорошим подходам к проектированию приложений.

    Откажитесь от Denver (а еще лучше, все же перейдите на linux, хотя бы в виртуалке), не ставьте Apache, используйте встроенный в php (с версии 5,4) сервер. В целях разработки довольно удобно, не нужно прописывать vhost от проекта к проекту.

    Изучите Bash (минимально, хотя бы основы), GIT, познакомьтесь с SSH и SCP, работайте с базой через консольный клиент (phpmyadmin не нужен), заодно потренируетесь писать SQL запросы. Если хотите все же остаться на Windows, ставьте MinGW (обычно при установке GIT требуется).

    Попробуйте изучить системы сборки проектов (Phing, Ant), учитесь покрывать код тестами (PhpSpec2, PHPUnit), используйте стандарты PSR (в частности используйте Composer).

    Ну и почитайте чего про TDD/BDD, SOLID, GRASP...

    Из языков рекомендовал бы изучить в обязательном порядке javascript, и посмотреть в сторону Ruby/Python, или же, Golang.
    Ответ написан
  • Что такое парадигмы программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Паради́гма - совокупность фундаментальных научных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов. Обеспечивает преемственность развития науки и научного творчества.

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

    Лично мне нравится определение "стиль программирования как описания намерений программиста".
    Ответ написан
  • Какие есть сейчас развивающиеся языки программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    это ruby то развивающийся и набирающий обороты? свой пик популярности он прошел, так же как и питон. То что вы начитались о php, не поработав с ним тоже ни о чем не говорит. Все это просто инструменты, каждый из которых хорош в своей сфере.

    Если говорить о набирающих популярность языках, то это dart, golang и т.д.

    p.s. RoR это фрейморк, а не язык. И я не рекомендовал бы его к использованию. На ruby есть много хороших фреймворков, но вот RoR не нужен.
    Ответ написан