LINUX.ORG.RU

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


1

3

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

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

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

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

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

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

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

Только если это ещё один клон языка, знакомого тебе. Иначе нужно время на изучение идей языка и их практических применений.
(всё-таки разница между си и эрлангом или, скажем, го и хаскелем _больше,_ чем между си++, Java и C#)
---

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

Экспресс-разработка?

quantum-troll ★★★★★
()

CPython тормозит? Pypy пробовали?

ei-grad ★★★★★
()

Посмотрите ещё на erlang какой-нибудь чтоли.

ei-grad ★★★★★
()
Ответ на: комментарий от son_of_a_gun

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

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

это как?

Уже никак, оно с 8-го года уже в гробу.

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

Тупой, что ли? За 15 минут обычный спек даже со скорочтением не прочитаешь. И компилятор не налабаешь, тупо скорости печати не хватит, даже если ты секретарша самого Путина и отхерачиваешь 800 знаков в минуту.

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

Когда я впервые прочитал про Joy, я первым делом слабал простенький интерпретатор его же на Java, просто чтобы понять, как оно устроено. Минут 40 ушло. С тех пор, да, умею. И APL могу читать и понимать, да.

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

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

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

На кой писать виртуальную машину?

Чтоб жизнь мёдом не казалась.

Достаточно компилятор из нового языка в любой из ранее известных

лолшто?

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

Я уже написал способ - дерзай.

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

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

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

Это такой транслятор, переводящий высокоуровневый код в машинный. Что, в школе не учили?

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

Ну зачем сразу «дом труба шатал»? Ты попробуй - спопоб дельный. Научишься - любой язык за 15минут выучишь. А не научишься - ну не дано значит, не программист.

son_of_a_gun
()
Ответ на: комментарий от ei-grad

Pypy пробовали?

нет, пока нет. Всё руки не доходят :(. Увы, я уже на три недели вперёд занят, но может будет минутка...

А распределенно оно ещё не умеет работать?

как приедет второй сервер то может и научится :). Пока сервак один смысла заморачиваться нет. Да и это оочень непросто будет и может создать офигенный оверхед.

на erlang какой-нибудь

думаю что не то. Его фишка это много «зелёных» потоков. А у нас тут система, считай, однозадачная.

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

На таких объемах (20 гб в памяти) уже стоит начинать думать о разнесении системы на несколько узлов. А из за неизбежного оверхеда при построении распределенной системы возможно производительность число-графо-дробилки будет не так критична, так что даже на питоне добавив пару серверов можно будет получить приемлемый результат. Вообще, у вас ведь наверняка там сейчас внутри реализовано что-то вроде этого, только не распределенное - https://github.com/xslogic/phoebus ?

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

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

Закон Амдала мы знаем. Но с таким подходом и 30 серверов не хватит. С учётом цены каждого (~6тыщ евро) проще нанять топовых программистов а нас уволить нафиг :).

вроде этого, только не распределенное

Эм, похоже, да. Интересная идея на счёт сообщений, надо это обдумать.

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