LINUX.ORG.RU

Помогите выбрать язык программирования.

 ,


1

3

Добрый вечер. Нужен какой-то язык программирования для анализа больших csv файлов, написанная программа на котором работала быстро. Все решения на python не подходят из-за медлительности, делать что-то с применением cython долго и не всегда приводит к резкому увеличению производительности.

Что мне надо:

  1. Наличие отладчика;
  2. Понятный и легкий синтаксис.
  3. Автоматическая уборка мусора. Руками освобождать память — усложнение кода.

Что я пробовал:

  1. Nim — проблемы с инфраструктурой (нормально не запускается отладка) + еще не стабилен. Но язык понравился.
  2. Rust — на мой взгляд переусложнили с unwrap(), например + зачем-то сделали 2 вида строк.
  3. С, С++ — не нравится «ручная» работа с памятью.

Сейчас присматриваюсь к Go, но отталкивает поддержка многопоточности, Scala — Хорошая интеграция с экосистемой java или .net. Еще не читал документацию.


Go подходит по всем пунктам

но я за Rust :)

Stribog ()

Scala — Хорошая интеграция с экосистемой java или .net.

С Java - плохая, практически все свое.

С .NET - никакой? хз как там дела продвигаются, но думаю трупик.

Бери просто тупо Java и все.

umren ★★★★★ ()

мимокрокодил:

для анализа

R

больших csv файлов

Perl

anTaRes ★★★★ ()

D, Haskell (у него понятный синтаксис, хоть и не является привычным), Common Lisp, Go.

Но раз тебе

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

То бери Java и не парься. Она очень, очень шустрая.

А оправдание

отталкивает поддержка многопоточности

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

Кстати да, Perl 5 забыл, сверху хорошо подсказали.

Deleted ()
Последнее исправление: merhalak (всего исправлений: 2)

Плюсую за java. И вместе с тем порекомендовал бы попробовать kotlin. Там интероп с джавой покруче, чем в скале будет. Плюс по сравнению со скалой легче и проще что ли.

blan4 ()

Используй максимум преимуществ в одном - Clojure

Debasher ★★★★★ ()

Почему отталкивает многопоточность? Её никто не заставляет использовать.

Deleted ()

цена вопроса?

anonymous ()

Эх, условия задачи бы почётче. Java, конечно, можно, но она как-то не особо с

анализа больших csv файлов, написанная программа на котором работала быстро

Что вы подразумеваете под анализом? Достаточно ли у вас памяти, чтобы «анализировать» данные на ходу, прямо из RAM? Или, все же, вы планируете где-то хранить данные перед анализом/результаты после анализа. Если ваши CSV файлы - уже сами по себе являются хранилищем, которое нужно непосредственно анализировать, то это другой разговор. Уточните, пожалуйста.

Условие

Автоматическая уборка мусора. Руками освобождать память — усложнение кода.

конечно не срастается с

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

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

  1. Читать и парсить большие csv файлы с помощью C - выберите библиотеку из списка, тот же libcsv
  2. Анализировать данные уже специальным сервисом. Пишем небольшой простенький сервис с RESTful на том же Java+Jersey, вешаем на локальный порт и валим ему данные из C-парсера. Там уже анализируем все, храним, строим графики/формируем отчеты/etc и забираем тем же API назад.

Получится довольно шустро, сталкивался уже с таким проектом. Все это, конечно, при условии что:

  • «анализ» данных достаточно сложен, чтобы претендовать на целесообразность выноса в отдельный сервис
  • скорость обработки больших csv файлов (сотни мегабайт, гигабайтные файлы лучше разбивать на части сразу, через C-парсер) реально важна. При всем моем уважении к Java, я бы лично не доверил ей огромные файлы, если бы реально пекся о производительности.
  • действительно нужно получить производительность, но от условия (Автоматическая уборка мусора. Руками освобождать память — усложнение кода.) избавиться невозможно.
znenyegvkby ()

Java.

Потому как если нужна быстрота разработки можно взять Groovy/Scala/Kotlin etc. Как вариант - Jython. А если внезапно потребуется скорость - Java. Можно написать так, что критичные участки работать будут очень быстро.

ant ()

Запихать базу, анализировать базу на любом языке?

anonymous ()

С++ — не нравится «ручная» работа с памятью.

Стандартные контейнеры и строки? Не, не слышал.

anonymous ()

Судя по тестам http://julialang.org/ (пролистай чуть ниже, там есть табличка benchmark, сравнивай по худшему (максимальному) результату) тебе стоит смотреть на Java, т.к. только для неё есть нормальные IDE (IDEA, Eclipse, NetBeans).

Для Julia есть ещё вариант с http://ipython.org/ Но что там и как - не подскажу, не юзал Julia с IPython мордой (сама по себе концепция notebook крайне удобно в интерактивной разработке, поудобнее REPL'ов будет).

Norgat ★★★★★ ()

язабан.

// видел этот срач на 1 странице

anonymous ()

Нужен какой-то язык программирования для анализа больших csv файлов

С, С++ — не нравится «ручная» работа с памятью.

Местную хипстоту не слушай, быстрее этих двух языков для своих задач хрен найдёшь. Любовь к подтиранию задницы сборщикам мусора придётся перебороть.

ThisNameWasFree ()

D попробуй

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

Стандартные контейнеры и строки? Не, не слышал.

Неистово плюсую, при наличии классов грех жаловаться на ручное управление памятью.

ThisNameWasFree ()

AWK

язык программирования для анализа больших csv файлов

awk

ps/ по постановке задачи - большего и ненадо..:-)

MKuznetsov ★★★★★ ()

Нужен какой-то язык программирования для анализа больших csv файлов

perl или R

anonymous ()

Вестимо

Golang!

anonymous ()

C++. Памятью вручную тебе вряд ли придётся в нём освобождать. Благодаря контейнерами и смартпоинтерам.

anonymous ()

dicos

Добрый вечер. Нужен какой-то язык программирования для анализа больших csv файлов

Что такое анализ? Можно подробней?

anonymous ()

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

den73 ★★★★★ ()

Как всегда перепись фанатов $langname, среди которых тонут редкие адекваты, советующие R. Хотя хз что ТС имеет ввиду под анализом, может там просто распарсить надо и куда-то переложить. А тут уже жабу расчехляют и коммон-лисп, лол.

anonymous ()

Если скорость-скорость, то C++14 без ручной работы с памятью. Если попроще, то Go (осталось непонятно что там оттолкнуло), или java/scala, если есть тяга к jvm.

anonymous ()

Scala — Хорошая интеграция с экосистемой java

Это точно не шкалка, у kotlin лучше.

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

Она там есть. Но можно обойтись без неё.

anonymous ()

Perl, а если размер файла большой, то R.

Vinni_Pooh ★★★★★ ()

Lua

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

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

Хочу попробовать силы в фондовом рынке. Для начала нужно разработать советника (робота) который будет сам покупать и продавать ценные бумаги по каким-то условиям. Эти самые условия нужно найти по историческим данным, которые у меня есть в csv формате.

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

Как я понял горутины это средство для написания асинхронного кода. Действительно, сейчас многопоточность не важна.

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

Израэль - это ты?

на C++

Там обычный си, завернутый в класс.

anonymous ()

С, С++ — не нравится «ручная» работа с памятью.

Тады вах. Не твое это. Не майся дурью.

Сейчас присматриваюсь к Go

Не советую эту гуголопарашу изучать. Зачем себе мозг травмировать?

java или .net

Ты геем хочешь стать?

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

Мне кажется, что быстродействие сильно просядет, если запускать экзешник через wine. Или есть какой-то способ компиляции исходного кода под ОС linux?

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