Компания
335,11
рейтинг
24 июля 2014 в 12:45

Разработка → Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна

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

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

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



Многие из тех, с кем я говорила, знакомы вам по постам в блоге Яндекса на Хабре: anatolix, kappa, bobuk, yafinder, styskin. Несмотря на то, что многие участники нашего опроса стали руководителями, они продолжают писать код. Под катом можно прочитать подробные ответы, не полностью попавшие в видео, и рассказать, что вы думаете по теме.

Григорий bobuk Бакунов
Программирует 25 лет. В Яндексе — 10 лет.

Когда-то пришёл работать системным администратором, а сейчас — директор по распространению технологий.



Вопрос, как всегда, очевидный. У меня любимых языков программирования, наверное, много. Больше всего я в последнее время пишу на Питоне — просто в силу того, что это язык, который позволяет мне максимально быстро выразить то, о чем я думаю. Но, конечно, он не единственный, и иногда приходится довольно много писать на JavaScript. Это не самое приятное развлечение в моей жизни. Наверное, больше всего кода и с наибольшим удовольствием я написал на Лиспе. 

Мне никогда не удавалось написать что-то хорошо на Erlang, потому что меня от него немножко подташнивает. Я бы даже не сказал, что это язык. Erlang — это такая среда, которая создана одной конкретной компанией, развивается в рамках одной конкретной компании, в которой был такой своеобразный культ личности. Иногда это хорошо, но иногда это приводит к тому, что все делается так, как удобно одному конкретному человеку. Есть небольшая группа людей, которые сильно похожи на создателя Erlang. Для них все удобно, эффективно, красиво — и я даже двух таких человек знаю. Но в реальной жизни для меня это что-то неудобное. Это как сесть в треугольное кресло и пытаться как-то разместиться. Ты садишься и понимаешь, что вообще не мое. И здесь болит, и здесь болит, как ни откинься. И уснуть невозможно. Вот у меня от Erlang такое ощущение. Примерно похожие ощущения были, когда я пытался заниматься Smalltalk, но тут тонкость в том, что он был для меня вынуженной необходимостью и поэтому я себя немного пересиливал. Видимо, Smalltalk принял мою форму. Ну, я не верю, что это я принял его форму. А с Erlang не срослось. 


Данил stolen Загоскин
Программирует 16 лет. В Яндексе — год.

Разработчик в группе разработки интерфейсов облачной платформы. Данил занимается нашим WebDAV-сервером, о котором мы рассказывали и который был написан на Erlang.



Мой любимый язык — Erlang, поэтому я здесь на нём и пишу. Когда я думал о том, как я хочу программировать, я подумал-подумал и что-то придумал. И когда я начал рассказывать об этом своим друзьям, они сказали, что я придумал Erlang. Поэтому я просто взял его и стал на нем писать. 

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

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


Сергей svv Вавинов
Программирует 27 лет. В Яндексе — 6 лет.

Пришёл в Яндекс разработчиком в Яндекс.Видео. Был главным в разработке Музыки, потом — в службе медиасервисов. Сделал несколько проектов для Яндекс.Диска. Сейчас — руководитель группы технологий работы с большими данными. Одна из задач, над которой работает Сергей, — проекты Яндекса для ЦЕРНа.



Я боюсь, что моего любимого языка программирования еще не создали, но могу перечислить нелюбимые. Мне не нравится C++. Он из тех языков, которые, наверное, нужно знать и на которых нужно уметь писать. То есть, как зарабатывать деньги, драться — можно любить, можно не любить, но нужно уметь. Для многих проектов полезно знать Java. С точки зрения самого языка, он достаточно плохой и убогий. Люди, которые всерьез занимаются программированием, сразу будут чувствовать его ограничения. Но Java — это не только язык, но и платформа: виртуальная машина JVM, стандартная библиотека, большое количество open source библиотек. Если понимать достоинства и ограничения платформы, это вполне подходящий язык для многих больших проектов. Очень важно знать какие-то скриптовые языки — Perl, Python. Первый, скорее, из нелюбимых, в второй — из любимых. 

Есть некоторые количество языков, у которых есть какие-то перспективы и из которых могут вырасти реально достойные. Сейчас сложно судить, какие из них выстрелят, но за ними стоит следить, чтобы понимать, какие в них заложены идеи. Из таких языков, например, Rust — язык, который сейчас используется для всяких мозилловских разработок. Он достаточно современный и потенциально может заполнить нишу, которую сейчас занимает C++ и отчасти Java. В нём много идей и из функционального мира, много идей о безопасном программировании. Но пока это именно исследовательская разработка, но Rust из тех языков, за которыми стоит следить. 


Артём breqwas Куликов
Программирует 12 лет. В Яндексе — 8 лет.

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



Я пишу программы на языке программирования Perl, и мне это нравится. Когда-то давно меня прособеседовали на язык C++ и взяли на работу. Я тогда хоть и был студентом, но уже успел где-то поработать. И вот в Яндексе мой тогдашний начальник, которого все именуют Дрюха, несмотря на то, что  у него есть имя и фамилия, спросил меня: «Хочешь на C++ программировать?»  Я ответил: «Не-е-ет». В ответ он сказал: «Тогда учи Perl». И я его выучил. С тех пор пишу на нём, и это просто прекрасно Он не пытается объяснять мне, что надо делать, и я пишу так, как хочу сам. 

Нелюбимый язык программирования — это тот, который вызывает боль и несчастье. Обычно на таких языках люди не пишут. Зачем? Есть языки, которые у меня вызывают боль, а у остальных — нет. Например, есть у нас люди (и некоторые из них даже сидят со мной в одной комнате), которые любят писать большие программы на языке Shell. Это ужасно. Зачем они это делают, я не знаю, но они их пишут. И мне их приходится читать. Это неприятно. 


Андрей Мищенко
Программирует 24 года. В Яндексе — 9 лет.

Пришёл в Яндекс разработчиком на C++, долго был руководителем разработки Поиска по блогам. Сейчас работает над улучшением алгоритмов машинного обучения в поиске.



Мой любимый язык программирования не для работы, а для души, это, конечно, Haskell. По крайней мере, когда я о нём узнал, он произвел на меня самое большое впечатление. Все, что было до этого, померкло. Я представить себе не мог, что могут быть языки программирования настолько стройные математически. Какие там замечательные системы типов, какие там замечательные ленивые вычисления, как там можно удобно и компактно формулировать мысли. Но я прекрасно понимаю, что для работы он более-менее не применим. На нём удобно писать статьи, когда ты хочешь рассказать о каком-то алгоритме так, чтобы его очень хорошо все поняли, а твой рассказ при этом был очень коротким. Вот в таких случаях код лучше всего написать на Haskell. Кому надо, те поймут.

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

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


Алексей kappa Капранов
Программирует 21 год. В Яндексе — 3 года.

Когда-то был руководителем Рамблер-Почты. Сейчас руководит группой инфраструктуры персональных сервисов в Яндексе. Лёша рассказывал на Хабре, как мы научили Почту обмениваться письмами по IPv6 и поддерживать SSL-шифрование.



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

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

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


Анатолий anatolix Орлов
Программирует 25 лет. В Яндексе — 9 лет.

Первые два года писал Маркет. Долгое время занимался поиском — в основном его производительностью, а потом и всем остальным. Сейчас занимается разными проектами в области скорости, архитектуры и т.д. Заместитель руководителя направления поисковых сервисов. Входит в 2% людей, которые заканчивают курсы на Coursera.



Любимый язык программирования у меня C++. И нелюбимый язык программирования у меня тоже C++. Что достаточно странно. Я его люблю за то, что он мощный и в нём ты не платишь за возможности, которые не используешь. Но современные языки программирования позволяют писать те же самые вещи сильно проще.

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


Андрей yafinder Плахов
Программирует 24 года. В Яндексе — 6 лет.

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



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

Мой нелюбимый язык программирования Haskell. Он замечательный, на нём можно заниматься увлекательнейшими вещами, имеющими отношения к теории языков программирования. И это как-то удивительным образом перпендикулярно производству какой-то осмысленной работы. 


Алексей Захаров
Программирует 24 года. В Яндексе — 6 лет.
Руководитель Java-разработки в отделе разработки облачных сервисов.



По сказке я должен сказать, что мой любимый язык программиррования — Java, но я с одинаковой силой люблю, но по разным причинам, люблю Java и Python. Java — хороший язык. Я с ним познакомился практически во время его зарождения где-то в 1996 году, начал на нём писать еще в институте, потом на всяких разных работах, потом продолжил в Яндексе. 

Java такой, на самом деле, серьезный язык, на котором можно написать достаточно серьезный код. Он будет хорошо работать, будет статически проверен, в нем будет мало ошибок. Для него написано очень много всяких фреймворков, хороших IDE, тулзов, которые многое за тебя сделают: и подсветят синтаксис, и проверят его. Много всего хорошего сделано за время существования платформы. А Python такой более легковесный, более легкомысленный язык. Но на нём можно делать такие элегантные штучки, красивые и короткие программы, которые ласкают глаз, когда ты на них смотришь. 

В Python нет статической типизации, поэтому ту программу, которая на Java занимает два экрана, можно уместить в 10 строчек и получить удовольствие от этого. Но в то же время он не обладает таким страшным синтаксисом, как Perl и еще какие-то языки. Но это, конечно, дело вкуса. Кому-то нравится Python, кому-то — только Perl, кому-то — только Java. Есть много Java-разработчиков, которые любят такие легкомысленные штуки вроде Python’а и JavaScript’а. А я люблю и то, и другое. 

В той части Яндекса, где я работаю, традиционно не очень любят Perl, потому что он страшен. Немножко побаиваются C++, потому что на нем можно сделать очень серьезные большие и страшные программы, которые потом никто не поймет, в которых очень долго можно искать ошибку, потому что в C++ можно делать очень много такого, что запрещенно, скажем, в Java. Вот это пресловутое множественное наследование, перегрузка операторов в плюсики и минусики. Можно сделать такую программу, которая вообще непонятно о чем будет. Но, конечно, если это будут читать люди, которые любят C++, то они, наверное, начнут генерировать какой-то гнев в мою сторону. Так что я не буду больше ничего говорить. 


Михаил mlevin Левин
Программирует 18 лет. В Яндексе — 5 лет.

Вы могли видеть лекцию Миши о том, как математика помогает Яндексу зарабатывать. Очень большая часть его деятельности — работа в наших академических программах. Он преподает в Школе анализа данных, участвует в создании программы обучения на факультете Computer Science Вышки и Яндекса. Дважды завоевывал медали на ACM ICPC в составе команды МГУ им. М.В. Ломоносова.



Есть язык программирования, на котором я пишу всякие олимпиады, — это C++. Просто исторически так сложилось, что на нём много опыта и удобнее получается быстро что-то написать так, чтобы оно работало. На работе я постепенно все меньше и меньше программирую. На самом деле, никаких предпочтений у меня нет. Я скорее отношусь к языку как к инструменту, на котором нужно выразить свои мысли и решить задачи, поэтому во всяких холиварах предпочитаю не участвовать. Все любят жаловаться и на C++, и на другие языки. Я воспринимаю это как необходимое зло.


Антон pg83 Самохвалов
Программирует 18 лет. В Яндексе — 9 лет.

Пришёл в Маркет программистом на C++. Работал над самыми разными задачами сервиса. Через несколько лет перешёл в поиск, где занялся надежностью и производительностью runtime поиска. Сейчас занимается системой сборки, которая позволит собирать всю нашу кодовую базу за несколько минут на большом распределенном кластере.



У меня нет любимого языка программирования, потому что язык программирования — это инструмент, то, чем ты сейчас пользуешься. Есть языки, на которых мне нравится писать больше и на которых мне нравится писать меньше, но нет любимых. Я достаточно консервативен в выборе. То есть у каждого программиста есть коробочка с языками, которые он использует. Я хочу, чтобы моя коробочка была маленькой, и на текущий момент времени я выбрал для себя C++ и Python. Собственно эти языки и использую. Но они не любимые, а просто инструмент. 

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


Андрей styskin Стыскин
Программирует 18 лет. В Яндексе — 9 лет.

Пришёл в Яндекс разработчиком на Java в группу поиска Маркета. Занимался классификацией товарных текстов и извлечением фактов из товарных описаний. Так началось его увлечение поиском и машинным обучением. Вне работы Андрей делал различные IR-игрушки: генератор стихов на языковых моделях, робота для прокачки социальных сетей. Сейчас Андрей руководит отделом ранжирования, в котором работает команда почти из 200 человек.



Любимый язык программирования — Java. Но я так давно им не занимался, потому что в поиске принято все делать на C++, когда это что-то серьезное, и на Python, когда у людей очень мало времени и быстро хочется показать результат. Это о таких, как я.

Java достаточно прост для того, чтобы быстро делать прототипы любой сложности, потому что он достаточно унифицирован. Все люди, которые умеют писать на нём, смогут воспринимать чужой код, быстро разбирать и переиспользовать компоненты. C++ этим свойством, например, абсолютно не обладает. И, если заранее не договориться, что вот здесь мы делаем так, а здесь — так, прочитать чужой код на C++ практически нереально.

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


Степан Кольцов
Программирует 10 лет. В Яндексе — 7 лет.

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



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

Условно говоря, есть всего два вида программ. Первые должны очень-очень быстро работать и выжимать последние байты из памяти и последние такты из процессора. А программы второго вида не очень требовательны к железу, и главное требование к ним самим — писать их нужно быстро, а поддерживать — дёшево. Сейчас мир устроен так, что первые, очень требовательные к железу, программы пишут на C++, а вторые — на Java. Как я уже говорил, я пишу на последнем и мне больше нравится писать, когда, условно говоря, можно написать много кода, от которого не требуют быстрой работы.

Но в будущем все будут писать на Rust. Rust — это моя любимая тема. Я всем рассказываю про Rust. Проблема C++  в том, что хотя программы получаются быстрыми, но написать их на нём так, чтобы они не падали, очень тяжело. Язык дает очень мало гарантий безопасности. Java дает очень много гарантий, но не позволяет писать программы так, чтобы они быстро работали. Rust, с одной стороны, позволяет писать безопасные программы, с другой — очень быстрые. Поэтому мой любимый язык программирования — это Rust. Но он еще не дошел до такого состояния, чтобы его можно было использовать, и будет таким лет через пять.

Я не люблю все динамические типизированные языки программирования — Python, Perl, JavaScript. У меня очень плохая память, а программы на них требуют, чтобы человек много всего запоминал. Нужно держать в голове какую-то информацию о типах, которой нет в коде. На самом деле, условно  говоря, мне с ними совсем тяжело, потому что у меня плохая память. Людям, у которых хорошая память, просто тяжело. 


Пока я готовила этот пост, задумалась, что если бы материал про языки программирования выходил в каком-нибудь массовом издании, там бы наверняка был психологический тест вроде «Какой язык программирования вам подходит». А как вы считаете, от чего зависит выбор того, на каком языке вы будете писать? И какие у вас любимые и нелюбимые языки программирования?
Автор: @Zalina
Яндекс
рейтинг 335,11

Комментарии (129)

  • +8
    Андрей [styskin] Стыскин очень смешно любит Java :)
    • +9
      А мне наоборот показалось, что не смешно, а грустно. Буря чувств. Безумная и всеобъемлющая любовь, которой тебя лишает бессердечный Яндекс.
      • +2
        Да, да, точно — буря.
  • +5
    В детстве сильно тащился от Asm — но это так, для кругозора — писать на нем долго и сложно. Тогда приходилось писать на Бейсике (а он мне не сильно нравился). Паскаль не любил за бесчисленные begin-end.

    В юности, на заре интернета писал на Perl — очень круто, но нечитаемо. Потом перешел на PHP — в эпоху, когда некоторые писали сайты на Delphi + BDE (то был ужас), php был хорошим, даже не языком — решением.

    Сейчас Python. Понятный, очень читаемый, модульный, с огромной библиотекой и батарейками. Очень нравится. Ну и JavaScript, конечно — куда нынче без него.
    • 0
      Почему не Руби?
      • 0
        А почему не Go\Rust\D\Brainf*ck\Еще десяток других языков помимо Ruby? Странный вопрос задали.
        • 0
          Видимо потому, что ruby и python очень сравнимы.
          • 0
            И еще потому что перловики часто переходят на руби.
            • 0
              Я видел как успешные php-шники переходят на python
  • +1
    bobuk не любит ерланг, а следующий stolen уже любит )))
    • +2
      Странно что нет комментариев про Rust.
      Хотя может и правда еще рано.
      • +3
        странно, что нет комментариев про Rust от bobuk он любит говорить за него в Radio-T, иногда :)
        • +1
          Так я о том же.
      • +2
        Может и правда рано, но я согласен со Степаном Кольцовым: в будущем все будут писать на Rust.
      • +1
        Вавинов и Кольцов говорят за Rust
    • +1
      Фразу

      Данил занимается нашим WebDAV-сервером, о котором мы рассказывали и который был написан на Erlang.


      я почему-то по инерции прочитал как

      Данил занимается нашим WebDAV-сервером, о котором мы рассказывали и который был написан на языке от которого подташнивает bobuk-a.
  • +18
    Ни один джавист не упомянул скалу. Поразительно. :)
    • +3
      Тоже ожидал упоминания этого языка.
      • 0
        Я очень удивился когда сделал поиск и не нашел упоминания :-)
        У нас уже почти готовый продукт написан, а с каждым днем все больше понимаем, насколько мало мы знакомы с бесконечными возможностями которые дает этот язык.
    • +2
      Многие апологеты Скалы в последнее время отчего-то переключились на Rust.
      • +5
        Это какие скалисты все же хипстеры. Т.е. они плюнули на всю инфраструктуру Java, со всеми ее 100500 библиотеками решений задач на каждый день, и переключились на Rust с 10 библиотеками на язык, который еще ни разу не продакшн. Смело.
    • +3
      Ни один джавист не упомянул Акку и Кложу!
      • +1
        Ну, акка не язык, а вот мой организм синтаксис кложи как и лиспа не может переварить.
        Даже Хаскель симпатичнее смотрится. :)
      • 0
        Все-таки Clojure по подходу от Java далека и джависту с нуля в ней освоится не просто. Но это отличный способ лисперу прижиться в Java-мире :-).
        Akka, из-за особенностей планировщика JVM, все-таки не заменяет Erlang, где планировщик знает об очередях сообщений и нет разрушающего присваивания. Все равно приходится избегать блокирующихся операций, помнить по пуле нитей. По этому и восторгов мало.

        А почему джависты плохо воспринимают Scala я понять ни как не могу. Вроде все приемы работы из Java в Scala так же применимы, а часто и более удобны. Только из-за поддержки в IDE?
        • 0
          Поддержка в IDEA отличная. Работая полгода в режиме фултайм, я замечал только один косяк — в 1% случаев не показывает ошибки несоответствия типов.
          Да, и с автоимпортами тупит и ошибается.
        • 0
          Да нормально мы ее воспринимаем. Только самым главным мотиватором для перехода на Scala были лямбды. А с 8й Java'ой такая необходимость отпала. Есть другие буонусы, но пока и так комфортно.
          Я люблю Скалу, но 8я джава действительно решила главную проблему и проектов на скале сразу стало меньше.
          • 0
            А как же вывод типов? :) Я уже не могу представить, что перейдя на джаву буду вместо val писать черт знает сколько.
            • 0
              Слабоват в Scala вывод типов. В системах с подтипами полноценный вывод типов сделать невозможно.
              Конечно, на безрыбии и рак рыба, но после Haskell описывать типы аргументов функций бывает лень ;-).
            • 0
              Мне подсказали решение на джаве:
              projectlombok.org/features/val.html
              github.com/peichhorn/lombok-pg/wiki
          • 0
            Меня в Scala привлекает поощрением иммутабельности, коллекциями, лучшим параметрическим полиморфизмом, и REPLом. Говорят, что современные IDE могут заменить REPL, но я ими не умею пользоваться.
          • 0
            Да, еще pattern matching. Когда программировал на Scheme, его отсутствие расстраивало. Правда, там были реализующие его библиотеки, но не хотелось тянуть в проект лишние зависимости.
  • +2
    Как-то так получилось, что питон обошел меня стороной когда я менял направление своей работы, но посмотрев это видео у меня почему-то зачесались руки начать на нём писать )
    А еще, я не видел bobuk ни на фотках, ни в видео уже больше года. Он изменился в лучшею сторону. Похудел, как-то спокойнее стал, стареет, наверное.
  • +3
    Он замечательный, на нём можно заниматься увлекательнейшими вещами, имеющими отношения к теории языков программирования. И это как-то удивительным образом перпендикулярно производству какой-то осмысленной работы.

    О да :). Удивительные вещи в самом деле слишком часто оказываются ортогональны осмысленной работе :).
    • +2
      Нужно просто с ними однажды наиграться и начать работать уже. Хаскель для этого совершенно пригоден, что показывают успешно разрабатываемые на нем проекты.
      • 0
        Насколько я понимаю слова Андрея Плахова, они описывает особенность не Хаскеля, а самого Андрея Плахова. Я в некоторой степени тоже обладаю этой особенностью, и в своём комментарии я говорю не о Хаскеле, которого совершенно не знаю, а о себе. Это у меня удивительные вещи слишком часто ортогональны нормальной работе, и это мешает до некоторой степени.
    • 0
      Здесь он не прав.
      Когда я занимался моделированием систем на кристалле, Haskell оказался самым удобным для этого языком. Мне кажется, что работа была вполне осмысленна.

      В других областях Haskell тоже не особо хуже популярных языков (правда и не радикально лучше), только уровень вхождения слишком высокий.
      • +3
        Скажем так, снайпер и из золотого пистолета хорошо будет стрелять.
      • 0
        No offence against Haskell: habrahabr.ru/company/yandex/blog/230775/#comment_7809161

        Я вообще не знаю Хаскель, но ортогональность интересных вещей нормальной работе замечал тоже.
  • +47
    И они. дома. вечерами. тайком. пишут на php…
  • +29
    Никто не любит C# :-(
    • +2
      Так можно сказать о php, а C# платформо-зависим. Его возможно любят в отделах раработки под win-платформы, а судя по конференциям все что можно — у них на linux работает.
    • +15
      А как вы оцениваете вероятность найти любителя C# в компании, разрабатывающей веб-сервисы под линуксом?
      • +1
        Я тоже пишу веб-сервисы под линуксом, но мне это не мешает в свободное время, клацать на C# :-)
      • +3
        Ну и что? Джон Скит любит C#, и является самым известным мировым спецом по нему, хотя работает Java разработчиком в Гугле.
        • +11
          Так какова вероятность найти в Яндексе Джона Скита?
          • +1
            Да, кстати, интересно, есть ли в Яндексе местные Джоны Скиты.
      • +1
        как ненулевую
  • +6
    Go, Ruby? Почему нет этих языков?
    • +12
      Go имеет фатальный недостаток применительно к Яндексу
      • +1
        тем не менее в Яндексе используют Go :)
      • +2
        Тем не менее, они с ним играются.

        habrahabr.ru/post/227073/
        Вячеслав Бахмутов из Яндекса рассказал про опыт использования Go в своей компании в облачной платформе Cocaine. «В Яндексе нет вакансий на gophers, берут питонистов, а потом говорят – будешь писать на Go»

        UPD: ссылки у меня не оформляются, поэтому оставил так.
    • +2
      Потому что эти языки совсем недавно были игрушками для тех, кому хочется чего-то нового.

      Ruby хоть и существует давно, но до популяризации его 37signals, для него было написано сравнительно мало reusable кода и нормальных библиотек. Скорость выполнения тоже была не впечатляющая. Из всех «преимуществ» только синтаксис, да и то это вопрос субъективный — кому-то нравится, кому-то нет.

      Go еще новее и еще «сырее».

      У меня подозрение, что Яндексоиды думают примерно так же, как наши разработчики: «Руби? Зачем, когда есть Python?» — не холивора ради, но в правильных компаниях думают не как поиграться с очередным языком, а как эффективно решить задачу любым подходящим инструментом.
  • +29
    Как-то молодо некоторые из них выглядят для того, чтобы программировать по 25-30 лет :)
    • +4
      Ну тут одно из двух — либо в яндексе тайком придумали эликсир молодости, либо кто-то не очень честен)
    • +6
      причем, если верить дате рождения в профиле хабра — получается что чуть ли не с 5 лет программируют :)

      не, ну я тоже в 5 лет программировал таймер на телевизоре, чтобы он через полчаса сам выключился, тем самым напугав бабушку :)
    • +4
      Тоже заметил. Мне например 25, как и у многих тут первая ЭВМ появилась довольно рано, допустим какой-то из клонов ZX Spectrum, где кроме как программировать ничего не оставалось. С тех пор так или иначе я связан с программированием. Получается, что я программирую 19 лет?
      • +7
        Получается, что да :) Я давала участникам опроса самим определить, когда они считают, что начали программировать. Но в основном у всех взяла самые ранние даты, если они не были категорически против вести с них отсчет. Реально в Яндексе много людей, которые лет с семи программируют.
  • +3
    У тебя не должно быть любимого языка программирования. Стать слишком близким с одним языком программирования — большая ошибка, чем недостаточное знание его. Не копируй других, действуй по ситуации. Плохо также для продукт-менеджеров и тимлидов испытывать к кому-то любовь или неприязнь. Тщательно изучи это.
  • –2
    Краткий пересказ: я хорошо знаю язык X, и немного приходится работать на языке Y. Поэтому X — люблю, Y — не люблю. Ещё я знаю perl, но в самом начале только и набирали perl-программистов. Сейчас переучиваюсь на другой язык Z, и т.к. я плохо знал perl, язык Z мне нравится больше (или т.к. я хорошо знал perl язык Z мне нравится меньше). И вообще язык это инструмент бла-бла-бла ко-ко-ко.
    • 0
      Замечательная выжимка из статьи!
  • +3
    Хороший программист может за 2 недели разобраться и начать писать на любом языке

    Да ладно.
    Ну начать писать, наверно, можно. А вот хорошо писать хорошие программы — …
    • +1
      Полгода-год в удачном коллективе.
    • +26
      за 2 недели реально узнать ключевые слова try-catch / try-except / etc. И дальше можно программировать в стиле Stackoverflow Driven Development.
    • 0
      Да ладно.
      Ну начать писать, наверно, можно. А вот хорошо писать хорошие программы — …

      Если программист опытный, то он быстро проведёт параллели между конструкциями/парадигмами нового и старого языков, и будет на 90% в курсе потенциальных граблей, на которые напарываются начинающие программисты.
      Остаётся проблема велосипедов, но она обычно успешно решается на этапе ревью кода.
      Плюс в случае Яндекса за соседними столами наверняка найдутся высококвалифицированные консультанты по нужному языку, готовые помочь в сложных случаях.
      • 0
        Я так и представляю программиста php, перепрыгнувшего на erlang. Всё-таки ЯП — это не естественные языки, бывает что они кардинально отличаются.
  • +14
    habrastorage.org/files/bc0/341/c7e/bc0341c7ec274bd8a95aafa60ceb9f88.PNG

    Извините, теги не работают :(
  • –2
    Как-то был на конфе и спросил у одного из докладчиков, – Какой язык программирования нужно знать, чтобы устроиться на работу в Яндексе? Сказали, – Python.
  • 0
    Программировал раньше на Перле — великолепный язык, который позволяет очень быстро выразить мысли в программу.
    Сейчас программирую на C#, тоже доволен.
    Подумал я, что любимый язык для меня тот, на котором я программирую на данном этапе жизни.
  • –1
    Вот говорят, что на Перле страшные программы. Так не пишите страшные программы, и их не будет. На перле можно написать так, что программа мало будет отличаться, например, от программы на PHP.
    • +3
      Скорее это на PHP можно написать так, что он не будет отличаться от перла (собственно этим и любят страдать «начинающие фрилансеры», скажем так) =)
    • +6
      Всем давно известно что Perl мертв, а программы на нем нечитаемы. И эти традиционные стереотипы являются важной частью культуры Perl. Так что не надо их ломать. А ты вы так ляпнете ненароком, что в cpan публикаются до сотни апдейтов и новых модулей ежедневно, или что существует irc.perl.org. А этого делать не надо — традиции следует бережно хранить.
    • +3
      Не уверен, что это комплимент Перлу. Код на пхп обычно ужасен.
      • 0
        Я имею в виду синтаксические конструкции
      • +1
        В любом случае, если на Перле можно писать страшно, это не означает, что нестрашно тупо не написать.
      • +3
        А Вы когда, извиняюсь, последний раз видели PHP в глаза? И чем, допустим вот это: github.com/laravel/framework/blob/master/src/Illuminate/Mail/Mailer.php отличается так сильно от шарпа или джавы (ну за исключением долларов и типизации).
        • 0
          Пол-года назад. Дали систему дистанционного обучения на базе какого-то открытого проекта, сказали исправить мелкий баг.(раскрытость пункта меню не всегда при переходах сохранялась). Глянул в код, пришел в ужас. Хорошо, что удалось спихнуть на коллег — они несколько месяцев с этим мучились.

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

          PS К тому же я не считаю java (да и C#, хотя знаком с ним только теоретически) хорошим языком. Scala позволяет писать более краткий и выразительный код.
  • +1
    Все знакомые из Яндекса говорили, что там используются три языка — js, python и C++. Обнаружить столько поклонников Perl было неожиданно :-). Сам использую Perl для программ не длиннее 20 строк. А часто из одной строки, запускаемой из vim или с помощью perl -e. В этой области Perl не превзойден.

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

    Обнаружил у себя странный критерий — если язык требует для возврата значения писать return (или его аналог, хотя эффект слабее :-) ), он мне не симпатичен, а если не обязательно, то язык приятен. Пока исключение только одно — Паскаль :-).
    • +2
      Все знакомые из Яндекса говорили, что там используются три языка — js, python и C++

      Это далеко не исчерпывающий список, конечно. Даже на скале проекты есть.
      • 0
        Наверно, мне так «везло». Были рубисты, пересевшие на питон и схемник, вспомнивший C++.
  • 0
    Любил да и люблю тайной любовью С++, хотя, по правде говоря, уже лет так 10 на нем ничего не писал. Одно время прототипировал на плюсах, но потом как-то все больше в С# подался, иногда балуясь Python, но любимым на данный момент является Java. Все свои проектики, особенно десктопные, делаю на Java. Думал подключать скалу, но после выхода Java8, пока сильной необходимости в Скале не вижу (в своих проектах), но как говорится «это только пока». Вот такие вот пироги.
  • –19
    Нда… Вроде «Rндекс», большая компания — не ожидал увидеть столько мракобесия — гик на гике с патологическим вывихом мозга и оттого странными предпочтениями в языках. Далдонят как мантру «скорость, С++» (при этом умудряются *овнокодить на Пестоне), а на дворе уже 21 век — не заметили, сердешные, что выжимать уже надо не байтами, а многопроцессорностью и времени на возню в С++ нет — писать надо быстро, масштабируемо и предсказуемо. То есть на C#. :) (люди повыше рангом — на Nemerle)
    А в 21 веке хвалить Jaбу — это чистый пример «парадокса блаба» (гуглите).

    Про С++ правильно сказали только одно: «Это плохой молоток, плохой нож, плохая ложка, плохая вилка, плохой штопор и так далее». ППКС.
    • +5
      Ну да, Яндекс-то весь на ноуте у Воложа на шкафу работает, какая там многопроцессорность :)
      • –3
        Ключевое слово — «С++», атавизм похуже перфокарт.
        • +1
          А вы представьте, что владеете компанией, для которой машинное время стоит в 10 раз дороже программистского. На чем будете писать?
          • 0
            Компиляторы C++ неторопливые. Придется какой-нибудь oberon выбрать…
          • –1
            Это что за машина такая? Золотой арифмометр, у которого ручку крутит Путин? Тогда да, бесценно. А так даже гугловские облака — дешевле грязи, о каком «дорогом машинном времени» речь?? Сейчас даже у стодолларового телефона 4(!!!) ядра!
            • 0
              Попробуйте себе представить, например, 100000 машин, выполняющих ваш код. Если мы не используем атавизмы, а пишем на каком-нибудь новом модном языке, это количество надо умножить примерно в 2—2.5 раза.А теперь считайте, во сколько вам обойдётся питание дополнительных 100к—150к машин, линии питания и охлаждения в датацентре (так и быть, будем для простоты считать, что нам не придётся строить 1-2 дополнительных датацентра), зарплата дополнительных инженеров, которые будут эти машины обслуживать, само обслуживание серверов — при таких количествах каждый день обязательно несколько машин выходят из строя.
              Попробуйте прикинуть всё это с числами, тщательно всё просуммировать, сравнить с собственной зарплатой программиста, и если вдруг у вас получится, что программист обходится дороже, то, думаю, можете смело идти строить ЦОДы и организовывать свой AWS.
              • –3
                Вы когда нолики набирали, у вас палец застрял :)
                1. Даже по официальным данным (которые яндексу имеет смысл завышать) у них всего 10,000 серверов. Очевидно, что не все из них даже в единой сети, а уж отдельно поиском занимается ограниченное к-во машин.
                2. Не надо ничего умножать, всё гораздо проще: есть одна машина, которая тянет на 80%. Её хватает для задач, но для надёжности её масштабируют ещё.
                То, что C# как «дробилка» слабже C++ — я полностью согласен, но «слабже» вовсе не означает двукратный проигрыш и аналогичное требуемое оборудование — там всё же не числа умножают, а делают поиск по текстам — совсем другая задача. Вполне жизненным может быть вариант, когда два С++ сервера загружены каждый на 20%, а три C# сервера — на 40% — это очень хорошие показатели, при которых стоимость разработки — точно ниже, а нагрузка — _приемлемая_ для их задач.
                • 0
                  М-да.
        • +2
          Из всей статьи, Вы не смогли вынести главного — для своей цели, свой инструмент.
          • 0
            Странно, что вы вообще нашли в статье «цели» — или вы смело отождествили должности с тем, что конкретно пишут на упомянутых языках? Смело, но недостаточно, чтобы здесь умничать.

            Кроме того, одно и то же можно написать на многих языках, вплоть до экзотических (тем же Рефалом спокойно обрабатываются тексты). Но если в мэйнстриме я увижу что-то рефалоподобное, этот проект умрёт для меня навсегда — потому что до некоторых яйцеголовых не доходит, что цель — одна, но путей и факторов оценки этих путей — много. «Скорость» — важное, но не самое главное в долгосрочных проектах — куда больше там важна устойчивость (тут С++ сливает на раз), сопровождаемость (вообще с С++ не подходи), лёгкость найма опытных разработчиков (а не клепателей классов по паттернам с неделей применения boost) и т.п. Будь у школоты побольше опыта, она б не фапала на свой С++ как Кихот на Дульсинею — в реальной жизни есть много чего, до чего они ещё не доросли — прощу уж им их штопаные минусы.
            • 0
              1) Умерьте свой пыл.

              2) Не понимаю, как
              для своей цели, свой инструмент
              противоречит
              одно и то же можно написать на многих языках, вплоть до экзотических
              ? В статье явно и неявно упоминают (в очередной раз), что язык — это инструмент. Или Вы по диагонали прочли?
              У Вас явно где-то жирный пункт по поводу C++. В Intel и NVIDIA точно дураки работают, раз делают это и это. Им срочно нужно донести, что
              «С++», атавизм похуже перфокарт
              . Я привел в пример только то, чем сам пользовался.

              3)Я прекрасно понимаю программиста, который выбрал для разработки бизнес-приложения Java/C#. Я так же прекрасно понимаю программиста, который выбрал С/С++/Fortran для разработки приложения реального времени. И я не утверждаю, что менять местами нельзя. Инструмент — это не только язык, но и инфраструктура, связанная с ним. Так о чем Вы хотели поспорить?
              • –2
                С вами вообще никто не хотел спорить — после слов «Из всей статьи, Вы не смогли...» я слышу лишь пижонство. Нравится С++ — ради бога, могу подарить дискеты, чтобы хранить заголовочники. Мне больше нравится прогрессивный подход — использовать новейшие разработки, тем более, что они позволяют с лёгкостью заменить С++ во многих местах. Думаю, Тындекс — не исключение, С++ там — лишь исторически сложившийся факт.
                • 0
                  «Имеющий уши да услышит, имеющий глаза да увидит». Вы, видимо, не имеете ни то, ни другое. За сим удаляюсь.
  • +9
    — Теперь выбери себе язык программирования. Ты почувствуешь его. Если и он выберет тебя, действуй быстро. У тебя одна попытка, %username%.
    — А как понять, что он меня выбрал?
    — Он захочет тебя убить.
    • 0
      Похоже, меня когда-то выбрал APL (в виде K). Но я от него убежал, наверно зря. Теперь жалеть буду. ;-)
  • +2
    Python, Java, Perl… Специфика Яндекса понятна, это в основном серверное и веб-программирование.
    А вот кто сможет назвать язык для создания хороших десктопных Rich GUI приложений? C# понятно, а если без привязки к .NET? Чистый C++ не предлагать, слишком уж он низкоуровневый для написания нормальных прикладных вещей «для пользователя». Я бы предложил Delphi (из-за нелюбви к Delphi просьба не минусовать).
    • +1
      А Java со свингом не подходит почему? Ну или Qt…
    • –3
      D + куча ГУЁвых библиотек.
    • +2
      Создание rich GUI требует от платформы таких возможностей (сугубо имхо):
      1. Большой выбор разнообразных готовых контролов
      2. Возможность кастомизовать их (другая иконка у чекбокса, разноцветные строки в листбоксе)
      3. Создавать свои контролы (например, дерево, элемент которого — выпадающий список).
      4. Чтобы в итоге это все хорошо выглядело на разных разрешениях.
      5. Чтобы в итоге это еще и быстро работало (т.е. желательно аппаратное ускорение графики).
      6. Четкое отделение UI от кода (иначе они срастаются, и править становится тяжело).
      7. Возможность делать современные эффекты и анимации.

      Кроме WPF что позволяет хотя бы половину? Попробуйте на Qt сделать сложный контрол, сколько уйдет на это времени? Единственное что-то подобное WPF, что попадалось на глаза — это FireMonkey, но я об этой технологии почти ничего не знаю.
      • –4
        Четкое отделение UI от кода

        И много вы в WPF «наотделяли»? Скажу вам по секрету, мания «отделять» — не самое важное в производстве программ. Хуже того — т.н. «логика» — это не только бизнес-правила, но и логика работы самих ГУЁв! Её вы куда собрались отделять? Более того — «логики» не существует самой по себе, она так или иначе завязана на бизнес-сущности. Так что всё это «отделение» — тупой баззворд, кто реально пишет программы, тот не гемороится сверх необходимого. Надо «покупателя» с методами — пожалуйста, но если в форме есть сотня методов для поддержки этой формы (и они, само собой, используют «покупателя») — я так их прямо и напишу.
        Кратко, возможности WPF по написанию качественного UI — ни на грош не лучше WinForms, разве что в простейших случаях кастомайзятся полегче.

        Чтобы в итоге это еще и быстро работало

        Это такая шутка что ли? WPF — тормознутое чучело по сравнению с любым самым навороченным UI на WinForms.
        • +3
          Это тролинг такой?

          1. Логика самих «гуёв» часто уходит в codebehind. Суть разделения не в «ui/код», а в «представление данных / обработка данных». Почитайте хотя бы Фаулера, что ли.

          2. Логика завязана на бизнес-сущности, да. А в UI нет бизнес-сущностей, там только UI. Все правильно.

          3. «Кто реально пишет программы». Ну я, и еще 500 моих коллег департамента исследований и разработки компании 2GIS реально пишем программы. И мы используем исключительно MVVM, вся логика во вьюмодели, весь ui в xaml, иногда немного в codeBehind. Мы все заблуждаемся по-вашему?

          4. Про тормоза WPF — пруфлинк, пожалуйста, или демку. То что рендер WPF идет на видеокарте вы знаете? А что она быстрее считает графику, чем CPU, надо объяснять?

          Основное преимущество WPF над WinForms (который даже рядом не поставить, это технологии разных технологических поколений) — это даже не кастомайз контролов, а связывание данных, позволяющее совершенно иначе (более гибко) строить архитектуру приложения.
          • –4
            Почему сразу троллинг? Вы настолько уверены в своей парадигме, что ничего другого понимать даже не пытаетесь?? Это называется самоуверенность, а я говорю абсолютно искренне. К слову, в моих приложениях тоже используется MVVM, но без фанатизма «чистоты». Если вы принципиально стоите на своих абстракциях, я даже не буду переубеждать — для себя я все выводы по MVVM уже сделал. А если интересно, вот вам задача поддых — как раз для ярых теоретиков: rsdn.ru слэш forum/dotnet.gui/5712828 — там как раз колом встала теория и ни WPF, ни MVVM не дают ответа. Точнее, ответы есть, но безобразные с т.з. нормальной логики.

            > Про тормоза WPF — пруфлинк, пожалуйста

            Вообще оборзели что ли от лени? Гугл перед носом, набери «WPF тормозит» и хоть упруфайся.

            > Основное преимущество WPF… связывание данных, позволяющее совершенно иначе…

            Ну то, что в XML засунули совершенно гетерогенный «язык связей» — да, но это ещё не делает технологию лучше. Если надо связать свойство item.Price с пргрессбаром.Progress — это можно делать и в WinForms, но когда идут сложные байндинги к шаблонам и подэлементам, там вообще хоть вешайся! «Лучшим» я это никак не могу назвать, скорее «универсально неудобным».
            Пока что WinForms по простоте и сопровождаемости (ключевые факторы в мэйнстриме) даёт фору всяким WPF'ам, а уж про скорость и говорить нечего.
            • +2
              MVVM, или в общем случае разделение ответственности по классам/модулям/слоям с уменьшением их связности — это не моя парадигма, а фундаментальные основы объектно-ориентированного дизайна. Дело не только в том, что это общепринятое правило хорошего тона в разработке. Дело в том, что это работает. И вытекает из здравого смысла, из самых общий соображений, применимых в любой инженерной задаче. А то, что не нужно быть фанатиком, и не следовать концепции ради концепции — это любой адекватный человек понимает. Есть ряд вещей, которые сделать через MVVM довольно тяжко, и того просто не стоит. Беда в том, что эту довольно-таки капитанскую истину вы почему-то доказываете с бурей эмоций, обвиняя в самоуверенности — даже смешно становится.

              wpf тормозит — вбил, и что? Если у кого-то кривые руки, это не проблема технологии. В наших продуктах ничего не тормозит.

              Сопровождаемость WinForms? Представьте, что заказчик захотел часть функционала видеть в web-интерфейсе, а еще часть логики нужно связать с шиной данных. В WPF у одной модели может быть сколько угодно вьюмоделей, а у каждой из них — сколько угодно вьюх. Ваш код на WinForms будет проще (но дороже) переписать с нуля, коли «разделением» вы особо не занимаетесь.
              • –4
                Не надо мне рассказывать про «MVVM — это бла-бла...» — я уже написал, что тоже это использую. Игнорирование этого факта выявляет в вас просто «толкателя своего мнения», даже не читающего что ему пишут. Зачем тогда все эти рассыпания в собственной уверенности о непогрешимости WPF? К тому же, я уже дал «задачу поддых» — что, опять замылился разум в толкании своего WPF? Где решение?

                И я опять вижу настойчивое бла-бла «WPF — это круто, потому что это MVVM». Это НИ РАЗУ не верно. WPF — гуёвая библиотека, MVVM — архитектура приложения. Причём можно делать MVVM с использованием WinForms (надеюсь, вас не шокировало? Вы устойчиво сидите?).

                > wpf тормозит — вбил, и что? Если у кого-то кривые руки…

                Ясно. «рашен программашен» — «у меня всё работает, а вы там хоть сдохните!».

                > Представьте, что заказчик захотел часть функционала видеть в web-интерфейсе…

                Уже ответил. WinForms позволяет точно так же писать с применением MVVM. Я лишь подчёркиваю, что не всё так идеально — «наотделять» много ума не надо, но есть куча именно гуёвой логики, которую «отделить» — целый геморой, задачу выше я уже предложил.
                • +3
                  В общем спорить больше не собираюсь, отвечу только на ваш вопрос. Посмотрел «задачу поддых». Поверьте, это совершенно не проблема, а типичная ситуация в MVVM. Проблемой она становится тогда, когда люди неправильно применяют WPF, фактически нарушая MVVM. А именно: во вьюмодели родительского окна, в команде, НЕЛЬЗЯ создавать вьюшку дочернего. Вьюмодели не знаю о вьюхах! Они должны знать только друг о друге. И вьюхи друг о друге, но не о вьюмоделях.

                  Решается очень просто. В команде родительской вьюмодели создаем дочернюю вьюмодель, передавая в нее все необходимые данные (иногда — просто ссылку на себя), и вызываем сервис, который по вьюмодели автоматом строит вью. Это умеет делать Catel, MVVM-фреймворк последнего поколения.

                  Мой видеоурок на эту тему: http://www.youtube.com/watch?v=qAktu1eGGa8
                  И код из видео: https://github.com/TimeCoder/DotNet/blob/master/src/BooksLibrary/ViewModels/MainViewModel.cs (строка 88)

    • 0
      js + node-webkit
  • +3
    Печальная картина, друзья.
    Несколько десятилетий активного развития IT-сфера так и не дали нам удобный «швейцарский нож» с острыми лезвиями. Мы пишем на С++ из-за его высокой производительности — но ругаемся на его низкую безопасность, все более тяжелый синтаксис, и низкую скорость разработки на нем. Язык C# — по мне так выразителен как поэзия, за создание WPF Майкрософту можно простить все прошлые грехи — но нет кросс-платформенности. Питон лаконичен, но обладает недостатками, присущими всем языкам с динамической типизацией.

    Какой-то заколдованный круг. Я хочу писать на языке с понятным (не Haskell, Rust и пр.) синтаксисом (как C# например), чтобы он был кросс-платформенным, позволял за счет своих стандартных библиотек создавать rich GUI, если нужно — играться с памятью на низком уровне. Несбыточная мечта?
    • +2
      Ну и за что минусы?)
    • 0
      Основа синтаксиса Rust та же, что и в C# — это C-подобные языки.
      А чем не понятен синтаксис Haskell? Синткасис простой, с минимумом конструкций, без лишней пунктуации, ориентированный на человека. Семантику понять может быть сложно, но синтаксис.
      Хотя сталкивался с ерлангистом, которые жаловался, что отсутствие скобок и запятых делает его непонятным для инженеров-электонщиков — мы тогда спорили, на чем модели микропроцессора писать :-).
      • 0
        Есть такая фраза: язык — это форма мышления. Думаю, что синтаксис как таковой там не сложный, трудность в том, чтобы перестать мыслить в ОО или процедурном стиле, и видеть решение задачи чисто в функциональном подходе. С ходу сложновато, нужна практика, а ее получить сложно: не вижу проекта, для реализации которого идеально подошел бы функциональный язык, а писать хелло-ворлды не хочется.
    • +1
      Я предположу, что Вы считаете синтаксис непонятным только потому, что недостаточно изучили его или работали с ним.
      Думаю, когда Вы только начинали программировать, Вы были в ужасе от синтаксиса C#/C или с чего начинали.
      Я вот точно помню — был в шоке и ничего не мог понять в C в программе HelloWorld.
      • 0
        Думаю, Вы правы, есть такой момент. Может и не только этот. Заголовок функции в любом С-подобном языке лаконичен донельзя:
        int CalcFactorial(int number)
        в отличии от упомянутых ранее языков нет стрелочек, слова fn и т.п. Для человека хотя бы немного знающего английский, этот код — фактически, выражение намерения на естественном языке (вычислить целочисленный факториал). Из каких-то дополнительных элементов (кроме названий) — только круглые скобки. Связь которых с передачей значения чему-либо всем интуитивно понятна за счет вшитой школьной алгеброй f(x).
        • 0
          лаконичен донельзя:
          int CalcFactorial(int number)


          В Питоне ещё лаконичнее :)
    • 0
      Правда, чем непонятен синтаксис Rust? Типичный синтаксис в стиле C++, синтаксис лямбд, говорят, взят из Ruby. И как раз всё как Вы хотите — безопасный код бесплатно (время жизни и обращение к переменным проверяются на этапе компиляции и в рантайме не тратят ничего), при этом разрешено делать unsafe{} блоки, в которых можно стрелять себе в ногу. Полная кроссплатформенность, кто-то на нём даже загрузчики писал, сейчас coreutils активно разрабатывают.

      С GUI, и другими библиотеками пока хуже, но у них как раз появился сейчас менеджер пакетов а-ля npm, и дальше ситуация будет улучшаться.
      • +1
        Про синтаксис ответил комментом выше. А вообще, Вы же понимаете, что для реальной профессиональной разработки
        язык != синтаксис языка
        язык = синтаксис языка + стандартная библиотека + внешние библиотеки + среда разработки + комьюнити и пр.

        Сложно представить, сколько MS вложил в разработку платформы .net. И GUI — для меня это как раз лакмусовая бумажка зрелости платформы. Мне попадались интересные языки, и интерес угасал сразу после ответа на вопрос «а как тут сделать хороший GUI».

        Дай Бог, что Rust в этом плане разовьется. Но ведь несколько лет назад то же самое пророчили языку D… А по факту уже годами получается, что нормально делать приложения, с современным UI, можно (с разной степенью удобности) на WPF, Qt и Java, и все(
        • 0
          Ну, Вы жаловались на непонятный синтаксис, поэтому именно про него я и отвечал) И тем страннее выглядит в вышеупомянутом комментарии отсылка к лаконичности C по сравнению с Rust, когда Вы комментарием выше за эталон берёте C#, который, как и Java, весьма многословен и неочевиден.
          • 0
            за эталон берёте C#, который, как и Java, весьма многословен и неочевиден
            Думаю, тут уже вопрос вкуса. Для меня код C# — самое понятное, что только можно придумать, кто-то от него плюется. Ну и я не отказываюсь от своих слов про синтаксис. Нам бы взять человека, вообще не знакомого с программированием, и показать, что понятнее:
            fn factor(n: int) -> int
            или
            int factor(int n)
            • 0
              Опросил несколько незнакомых с программированием гуманитариев (в примере добавлял ещё тело { return 1 }). Ответы разделились на две группы:
              • обе конструкции одинаково непонятны;
              • кажется, и там, и там какая-то функция, возвращающая 1

              Так что разницы, имхо, никакой.
              • 0
                Понятно. Видимо, группа #2 сделала свои выводы по телу функции, так что если говорить про сам заголовок, то есть только группа #1) Возможно, нужно поднять планку: технари, но не программисты.
                • 0
                  Боюсь, таких найти не получится) Технари все учат тот или иной язык, либо просто в рамках программы, либо в силу необходимости (на нашем химфаке почти каждый знал что-то из списка pascal/perl/c/fortran), соответственно, опрос просто сводится к вопросу, какой синтаксис ближе к изученному технарём языку.

                  Собственно, паскальщикам наверняка будет гораздо привычнее и очевиднее синтаксис Rust.
              • +1
                Народ, вы странные. Конструкции эквипенисуальные. Это как в школьные годы спорить, что лучше — begin/end или {/} (умолчим о том, что фигурные скобки таки победили :-) ).
                • 0
                  Я как раз и не спорю)
    • +4
      У меня одна надежда — что дикий Столлман покусает Майкрософт, и дотнет со всеми потрохами окажется в полноценном опенсорсе (а не как сейчас — частично приоткрытый дотнет и закрытый рантайм). Компиляторы шарпа и басика уже там, так что чудеса случаются… Будет опенсорс — будут полноценные порты, а не костыли с подпорками, не будет религиозной неприязни, и вообще мир станет лучше.

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

      Остальные чудеса совсем далеко: C++ не станет красивым и безопасным языком (давайте добавим 101-й способ прятать указатели — и всё станет зашибись, ну правда?), Java не станет мощным и универсальным языком (свойства? операторы? генераторы? ...указатели?), JavaFX не станет конкурентом WPF (CSS — наше всё), IDE для динамических языков не научатся читать мысли (свойство может быть, может не быть, но я тебе никогда не скажу), Haskel не станет понятным для простых смертных (а значит, непростым смертным не увидеть его на реальных проектах)…
      • +2
        Присоединяюсь. Мое видение ситуации слово в слово совпадает с вашим.
  • +3
    Автору — спасибо, что не поленились столько людей опросить. Получилась довольно взвешенная картина, и даже холиварить особо не хочется, хотя тема ещё та! :)
    • 0
      Спасибо! На самом деле, я переживаю, что наоборот — не все мнения высказаны. Хотя понимаю, что когда их сотни, собирать их сложнее.
  • +3
    Сколько комментов, и никто не написал, что для Zalina отведено слишком мало времени в ролике :)
    • 0
      Ну вот освою наконец-то циклы на Питоне и буду отводить себе больше времени))

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

Самое читаемое Разработка