LINUX.ORG.RU

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


1

3

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

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

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

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

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

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

ничего, я тоже топики дальше сабжа не читаю :)

true_admin ★★★★★
() автор топика

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

JFreeM ★★★☆
()

Напишите фремфорк на Си. dpkg очень даже объектно-ориентирован, и с паматью явно не работает

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

фреймворк и так пишется, но хочется более кардинальное решение.

true_admin ★★★★★
() автор топика

Ocaml? Хорошая скорость, ООП

anonymous
()

Одним глазом смотрю на D, вторым на julia, куда бы третьим посмотреть?

Маргинальщина

ObjC

Под мак/иос да, под остальное маргинальщина

annulen ★★★★★
()

Буду не оригинальным, но посмотрите на Common Lisp. Все вкусности есть, плюс критичные к скорости участки можно делать производительными.

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

Ви просто не умеете их готовить

Вы так говорите, как будто бы кто-то умеет их готовить. Или как будто бы их вообще возможно приготовить.

dmitry_vk ★★★
()

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

Dragon59 ★★
()

Посмотрел на go, не впечатлило.

Ты на него внимательно посмотрел?

quantum-troll ★★★★★
()

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

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

Конечно можно, кто считает по-другому, просто тролль или школота.

annulen ★★★★★
()

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

annulen ★★★★★
()

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

VladimirMalyk ★★★★★
()

CL уже предлагали?

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

У питона говно, а не биндинги. Слишком муторные и многословные. Без генераторов кода типа sip или swig неюзабельно вообще.

Reset ★★★★★
()

берите OCaml - скорость приличная, библиотек маловато конечно, но графы/строки/что_там_у_вас_еще умеет.

ymn ★★★★★
()

Альтернатив нет. D никак не родится, остальное либо эзотерика, либо тащит за собой толстенную VM.

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

впилить вместо них Lua-скриптинг

Я ждал, когда ты это скажешь :)

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

У питона говно, а не биндинги.

Утипути.

Без генераторов кода типа sip или swig неюзабельно вообще.

С тех пор, как появился ctypes, SWIG годится только как страшилка для детей (может, для биндингов к Си++, но речь не о них).

tailgunner ★★★★★
()

замена C

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

Ну и идите в жопу тогда, попутно говнокодя на поцкале и бейсике.

djambeyshik ★★★★★
()

ocaml по перфомансу неплох (на плавающей точке проседает, конечно, но быстрей питона по-любому). А если ocaml экзотика, то java.
Посмотри еще на ObjectiveC. Или Pascal.
Есть еще scheme, который компиляется в C. Guile, кажется, называется.

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

мне вот например в Java их очень нехватает в данный момент, приходится изобретать велосипед

marvin_yorke ★★★
()

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

Вам нужен альтернативный программист, т.е. умеющий писать на С.

Карго-культ инструментов разработки из профанов или новичков профессионалов не сделает - какой бы язык вы ни взяли, всё равно «погрязнете в коде», т.к. «грязнуть в коде» - это свойство человека, не языка.

ЗЫ. Лучше сделайте нормальный рефакторинг того, что есть. Сэкономите туеву хучу времени и сил.

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

у питона годные биндинги к С.

Пока нам это не помогает. Или всё писать на сях, а из питона только дёргать функции (тогда смысл питона?), или же всё писать на питоне, но тогда скорости не будет.

опять же есть скоростные готовые либы для всяких математик

У нас вот своё, к сожалению. Готовые либы только для типовых задач.

true_admin ★★★★★
() автор топика

julia, ooc, vala, C#, go
Ну и конечно же лиспы с хаскеллями :)))
//Тред-перечислятор языков.

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

Карго-культ инструментов разработки из профанов или новичков профессионалов не сделает

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

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

scheme, который компиляется в C. Guile

Неправда. Это Scheme, который хорошо привязывается к С. А компиляются в С: Gambit, Chicken, Bigloo, Stalin, например.

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

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

Может, С++ не лучший выбор для построения гуев, но это один из лучших вариантов для вашей задачи, если я правильно себе все представил.

azure ★★
()

Могу предложить не Java, а Scala, которая работает поверх JVM. Одна из лучших реализаций ООП. Достаточно сильно проработанное ФП. В крайнем случае можно писать просто как на «улучшенной» Java. Только нужно обязательно прочитать «Programming in Scala» от автора языка, а то иначе, не дай бог, станете как некоторые географы-историки рассказывать на форумах о том, какая Scala сложная :)

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