LINUX.ORG.RU

[прикладное ПО] замена C


1

3

Здравствуйте, коллеги.

Есть программа (досталась по-наследству) которая работает с большими графами, строками и много чего с ними делает. Написана на C. Это неудобно т.к. вся работа с памятью, указателями, границами массивов итп ложится на программиста. А ещё нет ООП, перегрузки, именованных аргументов и прочих вкусностей. В результате погрязли в коде. Нужен альтернативный ЯП.

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

Какие есть альтернативы C? Кресты не предлагать, не хотим :). Высказываются предложения использовать яву, но душа к ней не лежит. Моно и всё что с ней связано тоже не предлагать. Посмотрел на go, не впечатлило. Одним глазом смотрю на D, вторым на julia, куда бы третьим посмотреть? ObjC?

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

★★★★★
Ответ на: комментарий от anonymous

Если время и человекоресурсы позволяют

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

true_admin ★★★★★
() автор топика
Ответ на: комментарий от helios

навыки команды.

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

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

В отсутствии людей с большим опытом использования какого-то конкретного языка (а это и идеология, и стек технологий, и «общеизвестные баги»), всё же стоит смотреть на дурако-устойчивые языки / технологии. Такими я вижу Java и Python (не фанат их). Смотри либы, истории успеха - какие наработки вам больше подходят, тот язык и используйте.

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

Ну и если тимлид уйдёт из команды в течении года (и это ещё слабая оценка), всё рискует навернуться.

Если готов разгребать все эти проблемы, уверен в ближайшем будущем - выбирай экзотику. Нет - Java / Python.

helios ★★★★★
()
Ответ на: комментарий от true_admin

Может не этот проект будет переделан, скажем, на плюсы

К лешему плюсы. Всё что угодно будет лучше, хоть та же сишка. Я бы взял моно или на крайняк jvm. Можно даже поизвращаться с эзотерикой F#/scala. Хорошо конечно бы на окамле писать, но он давно уже труп, F# уж тогда надо брать. Хотя я представляю реакцию программистов, которым достанется от вас в наследство эзотерический код... Если жить не одним днём, то только C#/Java, увы безальтернативно.

anonymous
()
Ответ на: комментарий от anonymous

+1 Что-то я совсем забыл про .NET и иже с ним. C# программистов тоже много и начинать на нём легко.

helios ★★★★★
()

Какие есть альтернативы C?

Паскаль.

//Ваш К.О.

dikiy ★★☆☆☆
()
Ответ на: комментарий от bga_

мне вот интересно по каким критериям вы хороние языки?

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

anonymous
()
Ответ на: комментарий от anonymous

со всем согласен кроме развития. ЯП это такой продукт который хорошо если обновляется раз 10 - 15 лет. Многие языки так и не обновлялись со времен своего рождения т.к. были рождены идеальными - ни прибавить не убавить, все на своем месте. Если же под развитием понимать пополняемость и актуальность библитек а так же свежие компиляторы поддерживающие новые платформы, + активность типа очередной оптимизации то да - это влият но смотря какой язык. Если ffi есть - актуальность либ отпадает. Если сидим на гиганте типа jvm - платформы отпадают даже вместе я либами и оптимизацией. Так что запилить компилятор для jvm и не прогаришь.

bga_ ★★★★
()
Ответ на: комментарий от bga_

ЯП это такой продукт который хорошо если обновляется раз 10 - 15 лет.

Смотря какой ЯП. Тут вот питон рекламировали, а мы с ним горя то хлебнули при переходах 2.2->2.4->2.6. Как то стрёмно, когда у тебя отваливаются скрипты при смене минорных версий интерпретатора. Может я ретроград, но по-моему это ни в какие ворота. С другой стороны, когда язык настолько stable, что и библиотеки для него не обновляют... Тоже не годится.

Так что запилить компилятор для jvm и не прогаришь.

Уже есть F#, и на мой вкус он лучше окамля. Да, это не JVM, ну и хрен с ней.

anonymous
()

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

invy ★★★★★
()
Ответ на: комментарий от anonymous

Уже есть F#, и на мой вкус он лучше окамля.

F# лучше не брать, если уже не знаешь его перед началом проекта. Ибо там, во-первых, с ходу писать хороший код трудно (легко заплыть кучей лямбд, которые потом придётся разгребать), а во-вторых, может вылезти StackOverflowException внезапно, т.к. где-нибудь неаккуратно рекурсию написал. Ну и F# помедленнее C# будет.

Имхо, если брать F#, то как дополнительный ЯП в .Net проекте, который используется для мест, где нужно разгрести кучу условий (match-with удобен в этом случае) или если надо сделать асинхронность просто и понятно (async, ага).

Norgat ★★★★★
()
Ответ на: комментарий от LamerOk

поддерживаю, ну и локальную вики поднять, что бы вести документацию по коду

RA
()

Под требования хорошо подходит Vala.

exst ★★★★★
()
Ответ на: комментарий от quantum-troll

_абсолютно_ каждый ЯП можно раскритиковать, у каждого есть свои недостатки. на жабе и на плюсах написаны тонны кода. и они работают.

BattleCoder ★★★★★
()
Ответ на: комментарий от quantum-troll

A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl.

Да ну на... Не верю. Нафик. IMHO, как раз с точностью донаоборот.

Между прочим этот сайт написан на жабе... а вы её так критикуете, может, вам нечего тут делать? ;)

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

на жабе и на плюсах написаны тонны кода. и они работают

На Коболе тоже написаны тонны кода, ИЧСХ, они тоже работают. Пустой аргумент.

Macil ★★★★★
()
Ответ на: комментарий от mv

сишную лапшу на кластер натягивать - это ещё большая попоболь

Во-во. Хорошо, что напомнил. Я топикстартеру ocaml советовал, но у него есть проблема с многопоточностью. Евоенный сборщик мусора не многопоточный -> ocaml-овский код в одном процессе на одном ядре только исполняется.

cab ★★★★
()

Vala. Можно переделывать код постепенно.

k_andy ★★★
()
Ответ на: комментарий от JackyTreehorn

Вот сейчас разгребаю овер 100к строчек индусского кода 10летней давности. Никого из тех, кто его писал, в компании не осталось.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

И часто приходится спрашивать про затыки? За какамлы не скажу, но я что-то не припомню, чтобы за всю свою жизнь хоть раз бегал к какому-то там комьюнити с вопросами по C или C++.

anonymous
()
Ответ на: комментарий от invy

Неправильно. Писать надо на C++, привыкнуть к ссылкам и smart pointers и автоматизировать работу с памятью (RAII). Между современным С++ и банальным плоским C гигантская пропасть. На самом деле жаль, что в C++ так много обратной совместимости с C, был бы это более очевидным образом другой язык, не писали бы на нем по-ламерски, как на C.

anonymous
()
Ответ на: комментарий от true_admin

То есть, продакшна у вас нет, или команда такая большая? Перед тем, как написать заново, имеет смысл вспомнить историю нетскейпа :)

JackyTreehorn
()
Ответ на: комментарий от Macil

C++ и Java живы, развиваются и активно используются. Кобол умер, и спецы уже на кладбище либо на финишной прямой. Пример не в тему.

JackyTreehorn
()

Следуя последней моде, рискну предложить хаскель (что это такое не знаю, но в ушах уже навяз).

Delirium_veritas
()

Есть программа (досталась по-наследству) которая работает с большими графами, строками и много чего с ними делает. Написана на C. Это неудобно т.к. вся работа с памятью, указателями, границами массивов итп ложится на программиста. А ещё нет ООП, перегрузки, именованных аргументов и прочих вкусностей. В результате погрязли в коде. Нужен альтернативный ЯП.

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

Zubok ★★★★★
()
Ответ на: комментарий от mv

на хацкеле или лишпе

Так это ты в кодаче троллишь?

anonymous
()

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

s0L
()
Ответ на: комментарий от s0L

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

это должен был быть первый и единственный комментарий в топике

anonymous
()
Ответ на: комментарий от helios

Такими я вижу Java и Python

Питоном владеем отлично, даже кода успели понаписать. Но он дико слился по скорости. Даже на сях в 24 потока (на тачке два проца по 6 ядер + hyperthreading) обработка данных занимает несколько суток. А на питоне... Не дождались мы питона.

А ява... Думаем над этим.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Можно и плюсы. Но тогда им переписывать придётся.

А ссылки не всегда удобны да и преимуществ в них особых нет на мой взгляд.

invy ★★★★★
()
Ответ на: комментарий от s0L

ещё один. «одного ЯП хватит всем», да? Если бы не было разницы на чём писать то был бы только один язык.

Тут вопрос не в том что на другом ЯП будет проще или нет. Это даже не обсуждается, местных пи*доболов уже надоело слушать по этому поводу. Тут риски другого плана (не осилить, сорвать сроки, потерять совместимость с другими проектами итп).

У тебя странное определение лени. Лень это когда люди ничего не делают, а не когда они пытаются улучшить текущую ситуацию. Запомни это.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Лень это когда люди ничего не делают, а не когда они пытаются улучшить текущую ситуацию. Запомни это.

man Полесов

anonymous
()
Ответ на: комментарий от aiqu6Ait

фортран уже предлагали?

да :). Короче, ради прикола я выделю пару дней и попробую все варианты. Хотя бы для общего развития

true_admin ★★★★★
() автор топика
Ответ на: комментарий от anonymous

man Полесов

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

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Тут вопрос не в том что на другом ЯП будет проще или нет. Это даже не обсуждается, местных пи*доболов уже надоело слушать по этому поводу. Тут риски другого плана (не осилить, сорвать сроки, потерять совместимость с другими проектами итп).

не осилить? ну ты сам подтвердил мои слова

s0L
()
Ответ на: комментарий от s0L

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

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.