LINUX.ORG.RU
ФорумTalks

Какой инструмент правильнее подойдёт для решения задачи?

 , ,


0

3

Хочу писать небольшие программы, компенсирующие недостаток функционала у ПО, с которым работаю, ну и соответственно глубже погрузиться в теорию. Решать предстоит задачи близкие к математике, к примеру для набора данных выполняется преобразование Фурье, далее вычисляется медианная амплитуда для каждой частоты, после чего вычисляется медиана для этих медиан и полученный фактор можно использовать для выявления аномальных значений. Данные могут быть довольно большого объёма. Также необходима возможность рисовать 2D графику для отображения данных и результатов расчётов.

Я читал много тем на этом форуме и понял, что нет идеального ЯП, подходящего для любой ситуации, а потому решил создать эту тему и спросить, что лучше подойдёт для решения таких задач С или С++, а может быть Java? Эти языки были выбраны мной как варианты в силу их высокой производительности. Java, конечно, несколько медленнее, но в ней уменьшены такие возможности «выстрелить себе в ногу», как ручное управление памятью, выход за границы массива, UB и прочие «пугалки». Кроме того, есть тулкиты для работы с графикой, написанные на этих языках (или для них?).

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

Вышеописанное слабо связано с linux, потому добавлю, что рад буду советам какую ide (какой редактор + плагины) с поддержкой linux стоит попробовать, а так же какую литературу почитать.

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

Одни пробелы вместо табов чего стоят. А уж циклы со своими отступами вообще доставляют неземное удовольствие.

В адеквате ли ви?

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

Еще есть удобный seaborn, странный и гибкий bokeh.

Solace ★★
()

Если данные помещаются на жестком диске, python+numpy уже будет достаточно для большинства задач.

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

книг к сожалению не подскажу, я ++ по статьям в интернете в основном осваивал (и до сих пор осваиваю, т.к. я в прошлом сишник, который сейчас переходит на ++)

Вот два моих любимых источника http://www.cplusplus.com/, http://en.cppreference.com/w/

Потом http://artlang.net/ и http://scrutator.me/, и еще всяких сайтов при желании найти можно много где уровень статей намного круче хабра, но почему-то не такие популярные как хабр. Ну и да тот же хабр, обычно норм статьи (хотя есть и такие которые я бы поудалял оттуда =D )

По книгам я только одну прочитал и то пока не до конца - это Павловская Т.А «Программирование на языке высокого уровня си++» - очень академичный стиль изложения, местами есть опечатки или ошибки в описании работы некоторых библиотечных ф-й но в общем книга шикарна и в общем без ошибок. (в ней 98й си++ описан)

После неё я Мейрска читал некоторые главы, и могу сказать что если бы Мейрса сразу читал без предварительного чтения Павловской то или статей в инете, то ничего бы не понял («современный и эффективный си++» 3-е издание и еще «современный и эффективный си++ 42 совета»)

Еще скачала Александреску но пока не читал, но вроде бы он фанат Шаблонов и его стоит почитать для лучшего вникани я в метапрограммирование.

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

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

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

Так это же всё на первом курсе любого нормального вуза проходят.

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

Оба жручие. Они для разработки и начальной отладки алгоритма же.

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

у второй интерфейс любит «залипать» (но это, наверное связано с желанием авторов сканировать кучу больших файлов)

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

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

питон многие используют только потому, что во многих ВУЗах его преподают дл различных математиков и физиков.

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

Архитектуру (как программ, так и железа) надо даже при программировании на JS понимать. С многопоточностью вообще всё изи, кроме отладки и поиска багов.

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

Java можно изучать на перспективу к 10-ой версии она станет очень годной в плане низкоуровневого программирования. Может быть даже потеснит сферы влияния С++ в этом плане. Если еще гугл выпустить Андромеду и она будет с джавой под капотом, то «навыки, приобретённые при написании прикладных программ» очень помогут.

Впрочем эти навыки можешь применять и на Android'e, т.к. «мнение, что основное применение java это web и enterprise» ошибочно. Это в основном Android. Возможно порядка 80%. В 7 андроиде впилили OpenJDK, так что теперь программирование под Android не сильно будет отличимо от десктопа.

С++ - только если геймдев или массовое ПО, то чем будут пользоваться все (т.е. читай Windows). В остальных случаях туда смысла нет лезть.

Си - познаешь основы программирования. Может даже тебе хватит его возможностей и больше не захочется других ЯП ) В любом случае знать Си профессиональному программисту, хотя бы на базовом уровне, необходимо.

Можно еще Rust, но я как-то пока не видел, чтобы на нём тот же Tensorflow писали...

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

освой уже инструменты автоформата и проверки на pep8, а табы вместо пробелов — зло.

pylin ★★★★★
()
Последнее исправление: pylin (всего исправлений: 1)
Ответ на: комментарий от hippi90

за тебя это IDE/редактор делает
за тебя это ... делает

Вся суть местных говнокодеров.

crutch_master ★★★★★
()

C/C++. Жаба не то, что медленнее, от неё больше мусора (пок, пок, пок, зачем думать про память, за нас gc думает), больше будет геморроя с оптимизацией, когда памяти на большой объём данных начнёт не хватать. Для остальной скриптоты это тоже справедливо. На с/с++ с этим проще. Чтобы не выстрелить себе в ногу используй с++ и stl, читай мануалы, гугли, чтобы понимать, что делаешь. Вообще такие ошибки страшны когда пишешь какой-нибудь веб-сервис а не мелкие программки для себя, да и писать не понимая как потом это работает - удел имбецилов. Ide - codeblocks, codelite. Хорошая документация по с++ тут: http://www.cplusplus.com/reference/

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

На пистоне как раз таки можно поломать себе каждую кость в ноге по отдельности. Одни пробелы вместо табов чего стоят.

И какие же проблемы у питона с табами?!

pavel-g
()
Ответ на: комментарий от Pythagoras

Видимо я всё-таки плохо формулирую свои мысли. Я именно не хочу не «посчитать один раз и забыть», а создать приложение с 2D графикой и богатым элементами интерфейсом для выполнение некоторой задачи, где найдётся место и работе с данными и с уже упомянутой графикой и реализации сложных алгоритмов. Для тестировани и «посчитать один раз» я, конечно, взял бы python или matlab.

flyshoot
() автор топика

Решать предстоит задачи близкие к математике, к примеру для набора данных выполняется преобразование Фурье, далее вычисляется медианная амплитуда для каждой частоты, после чего вычисляется медиана для этих медиан и полученный фактор можно использовать для выявления аномальных значений. Данные могут быть довольно большого объёма. Также необходима возможность рисовать 2D графику для отображения данных и результатов расчётов.

Питон.

Меня всегда интересовало программирование

Питон, днзначна.

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

Одни пробелы вместо табов чего стоят. А уж циклы со своими отступами вообще доставляют неземное удовольствие.

Понятно, этого в биореактор сразу.

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

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

Отображение данных на этой связке делается вообще в десяток строк. Не вижу смысла от неё отказываться.

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

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

Я бы не ставил матлаб и питон в один ряд. Матлаб - это проприетарный DSL, при чём, по отзывам, весьма поганый в использовании. Python - это свободный язык общего назначения, писать на котором очень приятно. При этом, для ваших задач всё нужное есть и в том, и в другом. По-моему, выбор очевиден.

Axon ★★★★★
()

REBOL или еще лучше Red.

slon
()

Fortran + vim. Только не fortran77, а современный, ибо 77 - это адский ужоснах.

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

leafpad же - ни разу не хотелось обмазываться всякими монструозными летающими танкотракторами на воздушной подушке с поддержкой гита и инстаграма. Вот почему я не могу взять и начать писать на питоне где могу/хочу? С другими языками такой фигни нет.

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

Если для языка нужен целый IDE чтоб написать пару костылей то это какой-то неправильный язык. А если ещё и нельзя взять и сделать красиво табами (они для этого и нужны) - то это совсем неправильный язык. Сишный код, к примеру, можно писать практически где угодно (кроме пожалуй офисных пакетов) и в любом читабельном стиле.

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

Я в свое время слишком много писал на perl в vim. Не хочу больше, хочу чтоб все само.

Shadow ★★★★★
()

Я читал много тем на этом форуме и понял, что нет идеального ЯП, подходящего для любой ситуации, а потому решил создать эту тему и спросить, что лучше подойдёт для решения таких задач С или С++

Скачал на хабре прогу, чью-то курсовую по молекулярной динамике. Красивые окошки, не тормозит, без булды запускается в вайне, никакой хрени не просит, с кодеками вышел облом, но в непожатое видео кино сохраняет, а его лекго перекодирует авидемукс в x264. По всем положительным качествам было ясно что это не С/С++, глянул в бинарник - точно, написано на дельфях, потому и работает приятно. Соответственно, чтобы такая программа с окошками работала без вайна, собирать её нужно в лазарусе.

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

Это обертка.

В курсе, но кто-то не поленился эту обёртку написать.

DarkEld3r ★★★★★
()
Последнее исправление: DarkEld3r (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.