@Kizzeon

Какой язык программирования подойдёт для написания высокопроизводительного приложения на Windows?

Появилась надобность в написании приложения на Windows, которое будет работать с большими объемами текста(регулярным выражением заменить текст в 50 000+ строк текста и т.п.) и я не могу понять, какой из языков программирования лучше подойдёт для таких задач и какой из них лучше всего будет изучать.

До этого изучал Javascript и PHP. Но их производительности мне не хватает.

Приоритетность моих требований к языку:
1. Чем меньше нагрузка на процессор тем лучше(желательно что бы исполняемый код мог "выполнятся долго но стабильно", то есть без крашей при 100% нагрузки ЦП)
2. Жор ОЗУ при чтении текстового файла 100 мегабайт не больше 1-1.5 Гб
3. Не слишком высокий порог входа
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 8
mindtester
@mindtester Куратор тега Windows
http://iczin.su/hexagram_48
ответы более чем очевидны, в порядке приоритета перфоманса:
- C++, D
- Rust, Go
- даже C#
.. вот только пожелания
язык программирования ... для написания высокопроизводительного приложения на Windows
и
Не слишком высокий порог входа
состоят в полной противоположности

ps капля лирики
даже мой любимый C#, если добавить немножко ускорителей
https://habr.com/ru/company/clrium/blog/467663/
https://habr.com/ru/post/443804/
.. но это точно не сразу за порогом вхождения

pps я бы рекомедовал D, тем более и плагин для VS есть
ppps тут скриптовые языки советуют и критикуют регулярки.. и это более чем верно. регулярки слишком универсальный инструмент, что бы быть быстрым. регулярки в скриптовых языках - помножайте на скорости (точнее тормоза) интерпретаторов. на том же шарпе (без низкоуровневых финтов), но простым поиском по образцу начала фрагмента, и конца (да, задача была не сложной )), я получал что то вроде десятикратного обгона регулярок, самого же шарпа ))
.. вывод - если вы займетесь программированием.. реально займетесь. и правда, и на php, и на js, получите обгон регулярок, наверняка тоже на порядок. а если не поймете как обрабатывать строки, ни один язык вас не спасет. на любом языке можно написать самую медленную программу ))
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Например, Rust или C++.
Почему бы и нет?

Насчет производительности регулярных выражения я бы поспорил. Дело в том, что регулярки - это универсальный инструмент, и это не бесплатно. Гораздо производительнее сделать свой парсер с учетом ограничений к тексту, о которых вы знаете. Например, если какой-то кусок текста имеет четкий маркер, то можно найти его самым простым поиском подстроки. И далее к найденному куску также применить какой-то свой алгоритм, оптимизированный именно под этот текст.
Ответ написан
Stalker_RED
@Stalker_RED
Высокопроизводительная программа для обработки текста регулярками уже существует (причем лет сорок как), и называется sed.

Запустить можно в виртуалке, или в той линукс-подсистеме которая прикручена к винде, или используя cygwin, или вот кто-то даже собрал прямо sed под windows, офигеть!
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Да как бы на куче всего это можно написать, в том числе и на js. Можете глянуть в сторону go, учится за неделю, довольно производителен
Ответ написан
sarapinit
@sarapinit
Точу водой камень
Если текст находится в файле, то сделать замену по регулярному выражению можно стандартными средствами powershell.
Ответ написан
@baitarakhov
Если нужна простота и высокая производительность языка программирования, то попробуй Nim, также можешь посмотреть в сторону Cython

Если нужна обработка большого объема данных, хранение информации, поиск по ключевым словам, то для этого нужно использовать СУБД, например ArangoDB
Ответ написан
@Nordman99
До этого изучал Javascript и PHP. Но их производительности мне не хватает.

Видно плохо изучал раз нехватает при современных многогигабайтных ОЗУ и многоядерных процессорах компьютеров
регулярным выражением заменить текст в 50 000+ строк текста и т.п.

это фигня для любого языка, дело только в удобстве
Чем меньше нагрузка на процессор тем лучше

А как ты хочешь выполнять сложные вычисления без нагрузки на процессор?
Жор ОЗУ при чтении текстового файла 100 мегабайт не больше 1-1.5 Гб

так ты обрабатывай свой тескстовый файл не весь целиком сразу а кусками, конечно если ты просто открываешь файл для обработки и начинаешь работать с ним он может быть весь целиком загружен в ОЗУ, да и еще плюс сюда результаты его обработки и в итоге и выйдет жор ОЗУ, а надо средствами тех же JS или PHP открыть файл но подгружать его для обработки частями - скажем по несколько Мб, обработал выгрузил в результирующий файл, прочитал след неск.Мб и т.д.
А так самые быстрые языки будут C и C++ изучай их и будет тебе скорость, но у них высокий порог входа, и они самые неудобные из всех, так как там надо самому вручную проделывать многие вещи о которых в интерперетируемых языках более высокого уровня, таких как JS и PHP, ты и не догадывался, если нет желания с этим связываться то тогда изучай либо Python либо Lua - в них так же как и во всех остальных интерперетируемых языках высокого уровня можно проделать всё что тебе нужно, но Python хотя и очень удобный и развитый но не всегда радует скоростью, Lua на мой взгляд намного быстрее и удобнее, особенно при выполнении интерпретатором LuaJit его скорость наверно превосходит все остальные интерпретируемые языки и сравнима с C/C++, но он очень специфичный
Ответ написан
@AlexSku
не буду отвечать из-за модератора
А что если MatLab или Haskell и параллельные вычисления на видеопроцессоре?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы