Хотелось бы услышать ваши мнения на тему выбора языка программирования, на который стоило бы переписать часть продукта.
Немного о продукте.
Старый и монструозный. Работает на винде.
Состав: 70% С++, 30% С#.
В воздухе витает мысль переписать С++ часть на что-то новое и перспективное. Продукт не содержит частей, для которых есть серьезные требования к высокой скорости работы, но если такие все же найдутся по мере переписывания, то они, я думаю, останутся на плюсах (или есть тоже что-то современное и интересное, что может похвалиться скоростью работы плюсов?).
Конечно же, это будет долгий процесс, поэтому нужно что-то такое, что хорошо жило бы и с плюсами и шарпом. Так сказать, внедрить в продукт и потом перетягивать на этот язык все больше и больше фуцнкциональности из плюсов.
У меня есть опасение, что примется решение переходить на C#, я против шарпа в целом ничего не имею, но глубоко внутри как-то скептически настроен.. Возможно, у меня просто есть желание, пользуясь такой возможностью, выучить что-то новое и тут же закрепить полученное на большой практике и поэтому я не хочу видеть С# в качестве решения данного вопроса.
Сейчас так много разных языков, но я как-то выпал из движения и провтыкал историю их появления.
Какой нравится вам?
Почему?
Какой язык вы бы выбрали в моем случае?
Напишу немного о причине переписывания, но не хотелось бы чтобы топик скатился в оффтоп.
Мы банально не можем найти С++ программистов. Фирма (кстати, большая) находится в маленьком городке в горах в Австрии и по сути тут рядом конкурентных IT работодателей нету (не у кого переманить даже), а переезжать сюда только к нам что-то мало кто хочет (из плюсовиков) — люди едут за большими деньгами в другие места. Ближайшее от нас — город Зальцбург в 50 км (минут 35 на авто). Кстати, если есть С++/С# программист, кто хочет спокойной в плане стрессов и очень активной в плане спорта и отдыха жизни, то готов ответить на все вопросы Зарплата высокая относительно (для этой местности), но небольшая абсолютно (если сравнивать с прочими Европами).
Ну и еще одна, но не главная причина — поскольку продукт старый, то это шанс вдохнуть в него новую жизнь. В офисе этот же продукт (только уже веб-решение) разрабатывается полностью с нуля на чем-то вроде Java (я даже не в курсе), но у существующих клиентов имеющийся придется еще поддерживать лет 15 минимум.
Здравствуйте, vit0s, Вы писали:
V>Конечно же, это будет долгий процесс, поэтому нужно что-то такое, что хорошо жило бы и с плюсами и шарпом.
Для C++ есть SWIG — автоматически генерирует врапперы для C#, Java, Python, etc.
V>У меня есть опасение, что примется решение переходить на C#, я против шарпа в целом ничего не имею, но глубоко внутри как-то скептически настроен..
Если у вас и так Windows, и есть в округе C#-исты — то почему бы и нет?
V>Сейчас так много разных языков, но я как-то выпал из движения и провтыкал историю их появления. V>Какой нравится вам?
C++14
V>Почему?
Например потому что язык дешёвых абстракций — к примеру можно использовать замыкания и т.п. не опасаясь "гигабайтов аллокаций
" и подобного.
V>Какой язык вы бы выбрали в моем случае?
Для начала нужно определиться требуется ли переписывание, может достаточно модернизации, рассмотреть вариант аутсорсинга в удалённую команду. И если переписывать — то нужно смотреть кто есть в наличии по округе — это ведь основная ваша проблема?
V>Мы банально не можем найти С++ программистов. Фирма (кстати, большая) находится в маленьком городке в горах в Австрии и по сути тут рядом конкурентных IT работодателей нету (не у кого переманить даже), а переезжать сюда только к нам что-то мало кто хочет (из плюсовиков) — люди едут за большими деньгами в другие места.
Так вы предложите больше деньги — вы на переписывание больше потратите жеж. Или как вариант возьмите одного "мастера" который научит остальных.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
V>>Конечно же, это будет долгий процесс, поэтому нужно что-то такое, что хорошо жило бы и с плюсами и шарпом. EP>Для C++ есть SWIG — автоматически генерирует врапперы для C#, Java, Python, etc.
Спасибо, посмотрю.
V>>У меня есть опасение, что примется решение переходить на C#, я против шарпа в целом ничего не имею, но глубоко внутри как-то скептически настроен..
EP>Если у вас и так Windows, и есть в округе C#-исты — то почему бы и нет?
V>>Сейчас так много разных языков, но я как-то выпал из движения и провтыкал историю их появления. V>>Какой нравится вам?
EP>C++14
V>>Почему?
EP>Например потому что язык дешёвых абстракций — к примеру можно использовать замыкания и т.п. не опасаясь "гигабайтов аллокаций
" и подобного.
V>>Какой язык вы бы выбрали в моем случае?
EP>Для начала нужно определиться требуется ли переписывание, может достаточно модернизации, рассмотреть вариант аутсорсинга в удалённую команду.
Ввиду данных, с которыми работает приложение, аутсорс, к сожалению, невозможен.
EP>И если переписывать — то нужно смотреть кто есть в наличии по округе — это ведь основная ваша проблема?
Хорошая идея Посмотрим.
V>>Мы банально не можем найти С++ программистов. Фирма (кстати, большая) находится в маленьком городке в горах в Австрии и по сути тут рядом конкурентных IT работодателей нету (не у кого переманить даже), а переезжать сюда только к нам что-то мало кто хочет (из плюсовиков) — люди едут за большими деньгами в другие места. EP>Так вы предложите больше деньги — вы на переписывание больше потратите жеж.
Я бы рад предложить больше, но я просто программист и ничем не управляю (пока что). И рад был бы если бы мне больше предложили тоже
Здравствуйте, vit0s, Вы писали:
V>Напишу немного о причине переписывания, но не хотелось бы чтобы топик скатился в оффтоп. V>Мы банально не можем найти С++ программистов.
Хм. Если вот это и есть основная мотивация для смены языка, то разве не будет логичным выбирать что-то распространенное, "мейнстримовое", чтобы специалистов можно было найти в вашей глуши (C#?), а не искать что-то интересное и новомодное?
Здравствуйте, v6, Вы писали:
v6>Здравствуйте, vit0s, Вы писали:
V>>Напишу немного о причине переписывания, но не хотелось бы чтобы топик скатился в оффтоп. V>>Мы банально не можем найти С++ программистов.
v6>Хм. Если вот это и есть основная мотивация для смены языка, то разве не будет логичным выбирать что-то распространенное, "мейнстримовое", чтобы специалистов можно было найти в вашей глуши (C#?), а не искать что-то интересное и новомодное?
Да, логично выбрать тот же C#. Но если есть сейчас какой-то язык, который войдет в мейнстрим так же как С#, и если он интересный и новомодный, что многие его начинают учить или уже учат, то почему бы не взять его? Тогда, возможно, еще больше специалистов, пусть и молодых, начинающих смогут применить его тут на практике. В этом и вопрос — есть ли что-то подобное на примете сейчас.
Я не отрицаю, что может в итоге будет выбран и C#, просто хотелось бы послушать мнения о других, молодых и новомодных языках
Здравствуйте, vit0s, Вы писали:
V>Сейчас так много разных языков, но я как-то выпал из движения и провтыкал историю их появления. V>Какой нравится вам? V>Почему? V>Какой язык вы бы выбрали в моем случае?
Я сейчас пописываю в свободное от работы время некий проект для своего удовольствия. Я выбрал Go для основной части проекта, и C++ для GUI (потому что предполагается делать GUI на Qt, а биндинг Qt к Go сыроват).
Как язык, мне Go очень нравится. Он очень простой, но при этом в нем есть все необходимое (хотя людям, которые ценят в языках вычурность и богатое изобилие всяких замысловатых встроенных средств, Go не понравится).
Некоторые вещи в нем сделаны очень непривычно. Например, там нет исключений. Предлагается ошибку явно возвращать и явно обрабатывать. Некоторым это кажется недостатком, некоторым — достоинством. Я отношусь ко второй категории. При этом функция может вернуть разом несколько значений, что удобно, особенно когда приходится явно возвращать ошибку:
// Open the file
file, err := os.Open(path)
if err != nil {
return nil, err
}
Присваивание через := означает заведение новой переменной с автоматическим выводом типа, обычное присваивание записывается привычным способом.
В принципе, Go рассчитан, в первую очередь, на написание запчастей к сетевым серверам. Поэтому у него все хорошо с поддержкой UNIX'а, своеобразная модель многопоточности (встроенные легковесные потоки, которые рекомендуется использовать без стеснения) и нет неблокирующихся операций — предлагается весь ввод/вывод разбросать по потокам, а они уж сами разумным образом разползутся по имеющимся в машине процессорам и к операционной системе ввод/вывод придет эффективным для нее способом (Completion Port под вендой, epool под линухом и т.п.).
В язые встроенная сборка мусора, и от нее не избавишься. Это может несколько уменьшать эффективность программ, которые работают по принципу 1) получили запрос в новый буфер 2) обработали 3) послали ответ 4) забыли про буфер. Все забытые буфера станут добычей сборщика мусора, а если их много, то ему придется попыхтеть.
Язык компилируется в нативный код. В принципе, по имеющимся в интернете немногочисленным бенчмаркам утверждается, что Go по скорости проигрывает раза в два C++ и выигрывает раз в 10 у питона. На мой взгляд, это приемлимо.
На выходе компилятор порождает статический исполняемый файл. В результате они довольно большие, но зато не имеют внешних зависимостей.
Имеется встроенная связка с Си, простая и удобная. C++ можно привязать, если сделать "входные точки" совместимыми с Си. Одно предупреждение: вызов из Go в Си может привести к скрытому переключению на другую нитку операционной системы. Логически это не заметно, но занимает какое-то время. Сделано это затем, чтобы если нитка Go заблокируется неожиданно для рантайма в сишном коде, это не привело к неприятностям. В принципе, унутре у него имеется механизм быстрых вызовов и сами они, в библиотеке, им пользуются. Но он не рассчитан на использование простыми людьми, почти не документировать и т.п.
Библиотека очень богатая, и есть куча сторонних библиотек, 99% из которых — open source под весьма либеральной лицензией.
В общем, в среднем я доволен и рекомендую другим посмотреть.
Здравствуйте, vit0s, Вы писали:
V>Мы банально не можем найти С++ программистов. Фирма (кстати, большая) находится в маленьком городке в горах в Австрии и по сути тут рядом конкурентных IT работодателей нету (не у кого переманить даже), а переезжать сюда только к нам что-то мало кто хочет (из плюсовиков) — люди едут за большими деньгами в другие места.
А примерно сколько?
V>Я бы рад предложить больше, но я просто программист и ничем не управляю (пока что). И рад был бы если бы мне больше предложили тоже
Может и не париться тогда? Кто управляет — тот и решит.
V>Да, логично выбрать тот же C#. Но если есть сейчас какой-то язык, который войдет в мейнстрим так же как С#, и если он интересный и новомодный, что многие его начинают учить или уже учат, то почему бы не взять его?
Ну тогда возьмите Haskell! Его как раз многие начинают учить Правда, немногие научаются. Я вот — пока ниасилил.
А так, самый правильный язык — плюсы. Наличие толпы дешёвых шарпеев-диезников вовсе не означают, что они могут писать, а тем более переписывать, программы. На его мейнстримность забейте, мелкософт уже going native.
Здравствуйте, cures, Вы писали:
C>А примерно сколько?
Сколько что, зарплата? Пусть будет 2100 чистыми (14 раз в год).
V>>Я бы рад предложить больше, но я просто программист и ничем не управляю (пока что). И рад был бы если бы мне больше предложили тоже
C>Может и не париться тогда? Кто управляет — тот и решит.
Ну в компании царит атмосфера большой и дружной семьи, поэтому интересуются мнением всех, кого касается тот или иной вопрос и я знаю, что нас девелоперов тоже спросят что мы думаем по этому поводу. А я как-то и не знаю, что ответить, но оставлять без ответа такой вопрос не хочу ибо имхо это будет интересный движ (с перепиской) и плюс есть так сказать официальный шанс в рабочее время выучить новую технологию. Да еще и куча практики.
V>>Да, логично выбрать тот же C#. Но если есть сейчас какой-то язык, который войдет в мейнстрим так же как С#, и если он интересный и новомодный, что многие его начинают учить или уже учат, то почему бы не взять его?
C>Ну тогда возьмите Haskell! Его как раз многие начинают учить Правда, немногие научаются. Я вот — пока ниасилил.
Посмотрю что по чем с ним
C>А так, самый правильный язык — плюсы.
+1
C>Наличие толпы дешёвых шарпеев-диезников вовсе не означают, что они могут писать, а тем более переписывать, программы.
Здравствуйте, vit0s, Вы писали:
V>Кстати, если есть С++/С# программист, кто хочет спокойной в плане стрессов и очень активной в плане спорта и отдыха жизни, то готов ответить на все вопросы
Хотелось бы предметно поспрашивать а отправка на сайте поломалась ...
Здравствуйте, stan72, Вы писали:
S>Здравствуйте, vit0s, Вы писали:
V>>Кстати, если есть С++/С# программист, кто хочет спокойной в плане стрессов и очень активной в плане спорта и отдыха жизни, то готов ответить на все вопросы
S>Хотелось бы предметно поспрашивать а отправка на сайте поломалась ...