LINUX.ORG.RU

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


1

3

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

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

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

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

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

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

Пока нет. Много думаю над этим, сегодня pypy постараюсь потестить. Ты ведь его имеешь в виду под «альтернативной реализацией»?

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

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

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

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

s0L
()

Всем спасибо кто конструктивно учавствовал в дискуссии. Основные пути решения намечены, что почитать и куда копать теперь понятно, будем просветляться.

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

Между прочим этот сайт написан на жабе...

К счастью, мне не придётся заниматься его поддержкой.

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

Между прочим этот сайт написан на жабе...

угу, я запускал на локальной тачке. Он выдал бэктрейс глубиной больше чем в тыщу вызовов и был весьма информативен: NullPointerException

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

cython не поможет. Он делает две вещи: исключает интерпретатор байткода путём вызова API напрямую и поддерживает статическую типизацию. Классы и объекты он не ускорит.

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

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

anonymous
()

Кресты не предлагать, не хотим :)

ну и зря.

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

По багам. Внезапно потребовалось это добро перенести с winXP на win7 и вылезла куча багов. Задача заставить это работать хоть как-то ASAP, а после релиза проводить уже рефакторинг.

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

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

Котоняше, возможно, поможет C + CUDA.

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

Нет. Там используются сторонние проприетарные MFC контролы, которые больше не поддерживаются. Их приходится выпиливать и переписывать по-другому. Плюс дохера утечек/порч памяти и прочей лабуды, которую старая версия MS'овского рантайма глотала (глючило, но не падало(, а в новой (от VS2008) всё падает.

DELIRIUM ☆☆☆☆☆
()

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

то есть тред выбора шашечек, а не на чем ехать?

Karapuz ★★★★★
()

замена C

И сколько ты будешь учить новый язык? По скольким граблям пройдёшь, пока осилишь?

а нам скорости C еле хватает

Вот и не хнычь, а то ассемблер посоветуем...

gandjubas
()

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

Начальству респект.

gandjubas
()

Весь топике не читал…

Но может быть Objective-C?

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

а истории успеха по похожим задачам не находятся? Ну, типа «сидели писали на C обработку логов/графов/строк/регулярки, пришел гений, переписали на SQL, стало работать в 2,783 раза быстрее.... профит!». не гуглится ниче?

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

Я почему про социалки спросил, буквально на той неделе ссылка на глаза попалась про то почему плох MySQL и хорош neo4j при поиске в сетях. его (neo4j) [прикладное ПО] замена C (комментарий) упомянул

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

вообще если графы/строки то это не парсинг ли втентакля/соцсетей?

Парсингом фтентакля занимается главный штангист. На хаскеле, ЧСХ.

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

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

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

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

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

Программист обязан быть знакомым со всеми типами языков еще до того как он приступит к профессиональной деятельности. Для того м нужно образование. Кто не справляется, тому не место в профессии.

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

Любой новый язык учится за два часа

отчего же грамотных программистов единицы? :)

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

почему плох MySQL и хорош neo4j при поиске в сетях.

ух ты, любопытное направление- специализированные базы графов. Я если и знал о них то давно забыл, надо бы почитать. Спасибо.

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

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

Тёлке своей лечи про два часа, может даст...

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

Тогда только жрать кактус :(

Хороший memory debugger будет совсем не лишним.

JackyTreehorn
()

Аду уже советовали?

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

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

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

Можно поинтересоваться, а чем вам Qt/C++ не угодил? Вполне себе удобная штука.

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

azure ★★
()

С вашим прогрессивизмом и боязнью старых технологий — только Adga.

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

Программист обязан быть знакомым со всеми типами языков еще до того как он приступит к профессиональной деятельности. Для того м нужно образование. Кто не справляется, тому не место в профессии.

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

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

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

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

не корми тролля. И ежу понятно что выучить синтаксис != освоить ЯП, его библиотеки и основные паттерны а так же пройтись по типичным граблям.

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

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

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

Зачем синтаксис? Любой язык учится элементарно: читается спек, пишется на коленке интерпретатор или компилятор для наиболее характерного подмножества языка, выясняется, где у этой хреновины документация к стандартной библиотеке, что в ней есть, чего нет и как по документации искать. Как раз на два часа работы.

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

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

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

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

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