LINUX.ORG.RU
ФорумTalks

Как можно жить с matlab?!

 , , , ,


0

3

Прошел университет (все курсовые и диплом с отличием) с python/sage math + latex, в аспирантуре приходится «сдвигаться» на matlab + word.

Но если к страданиям от использования Word удалось более или менее привыкнуть (ибо по ходу обучения все-таки приходилось много писать в Word ввиду требований), то с matlab столкнулся впервые.

На своем сайте они пишут:

The object-oriented programming capabilities of the MATLAB® language enable you to develop complex technical computing applications faster than with other languages, such as C++, C#, and Java™.

Они это серьезно?! После первой попытки «в лоб» сесть и написать простенький класс в matlba у меня случился приступ гнева. У них же все по-другому (не то что в C# или тем более Python) - это идиотская привязка к именам файлов. Какая-то неочевидная концепция где value-type и где reference-type, какой-то logical вместо boolean, отсутствие return, get() и set() в gui... в общем, адъ!

Библиотека алгоритмов и работа с матрицами сильны, но ООП/GUI на первый взгляд пророчат сильную попоболь :( И невольно вызывает желание провести параллель вида (python/* по отношению к matlab суть тоже, что *tex* по отношению к word).

Linux тут притом, что octave, как понимаю повторяет всю эту вакханалию.

Есть истории успеха, как удалось это пропустить через себя, не потеряв рассудок?

Надеюсь, я не прав и это только первое впечатление.

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

Точно, не понимаешь о чём говоришь. Octave на сегодня - самый убогий математический пакет.

хм. не было еще задачи, чтобы я на octave не решил, а matlab решал бы. Нормальный пакет, чо гонишь?

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

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

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

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

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

хм. не было еще задачи, чтобы я на octave не решил, а matlab решал бы. Нормальный пакет, чо гонишь?

Не надо ля-ля. В octave библиотека беднее, чем в матлабе. Язык такой же убогий. Вместо графики - гнуплот. Проигрывает этот octave что R, что питоноским модулям по всем параметрам.

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

А когда делали матлаб, нормального языка ещё просто не было, поэтому в MathWorks выдумали свой недоязык.

Это всё, видимо, верно. Но зато матлабовский язык — это такой интерпретируемый фортран на стероидах: native работа с матричными сущностями, хорошая стандартная библиотека, низкий порог вхождения. В общем-то для прототипирования как раз то, что нужно.

А scipy/numpy пока проигрывают в том, что появились позже: хуже документация, особенно в плане туториалов и прочих «numpy для идиотов за 10 минут», не такая богатая и отлаженная библиотека. Ну и честно говоря, мне лично питон не нравится эстетически, сколько раз уж пытался его использовать.

В идеале, хотелось бы что-то типа Scheme (элементы функционального программирования — замыкания, карринг, лямбды и функции как типы), но с инфиксным синтаксисом (чтобы студентов не пугать), типизованный, но не строго (массовое применение чего-то типа auto в C++11 — вывода типов, но чтобы auto не надо было писать), поддержка элементов ООП (объекты, наследование, перегрузка и полиморфизм), но без множественного наследования, автоматическое управление памятью, тензорные операции как элементы языка (не только вектора и матрицы, но и прочие индексированные объекты). Ну и нормальная библиотека алгоритмов, с биндингами к существующим пакетам, чтобы велосипед не изобретать. Уф, выдохнул :)

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

В идеале, хотелось бы что-то типа Scheme (элементы функционального программирования — замыкания, карринг, лямбды и функции как типы), но с инфиксным синтаксисом (чтобы студентов не пугать)

Ну так это и есть Python.

tailgunner ★★★★★
()

какой-то logical вместо boolean

Да, это все в корне меняет. Программировать на таком нельзя

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

Там были еще требования

Ну, не все требования можно воспринимать всерьез («типизированный, но не строго», «отсуствие множественного наследования», «тензорные операции как элементы языка»). Остальным требованиям Python отвечает.

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

Ну, не все требования можно воспринимать всерьез

Это тебе это «не всерьез». А для делания науки это как раз очень серьезно, гораздо серьезнее замыканий.

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

Чем строгая типизация в языке мешает «делать науку»?

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

Это тебе это «не всерьез».

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

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

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

Simulink - не часть матлаба, а тулбокс для него. Есть куча подобных примеров для случая с питоном привести, когда нужные _программы на python и библиотеки_ позволяют специализированные штуковины творить.

Я всё же не рассматриваю Матлаб как просто язык.

Всего что может матлаб питоном + библиотеки не заменить, тут хоть тресни. Да и нахрен оно надо?

golodranez ★★★★
()

У матлаба таки есть серьёзное преимущество перед питоновскими либами. Его освоить несравнимо легче. Это хорошо для тех, кому надо побыстрее наделать графиков, не вникая в азы программирования. Но если ты уже знаком с питоном, то в переезде на матлаб нет никакого смысла.

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

Возможно, ты хотел сказать «с выводом типов».

Я пояснил, что я хотел. Да, именно с выводом типов.

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

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

Лично я на своем опыте программирования на C++ для физических исследований ни разу не нашел множественное наследование полезным, хотя остальные фишки ООП пригождаются.

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

хм. не было еще задачи, чтобы я на octave не решил, а matlab решал бы. Нормальный пакет, чо гонишь?

Не надо ля-ля. В octave библиотека беднее, чем в матлабе.

еще ни разу на недостаточность не натыкался. А юзаю я octave дофига.

Язык такой же убогий.

норм язык.

Вместо графики - гнуплот.

так это ж вин.

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

«типизированный, но не строго» - это вобще не всерьез.

Не нравится человеку ассемблеры, BCPLы и Forthы, что не так?

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

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

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

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

Лично я на своем опыте программирования на C++ для физических исследований ни разу не нашел множественное наследование полезным, хотя остальные фишки ООП пригождаются.

Да ладно, большинство научных сотрудников понятия не имеют, что это такое, и это не мешает использовать numpy/scipy/sage и т.д. Тем хорош питон, что весь этот ООП есть где-то на низком уровне, но пользоваться им напрямую обычно нет нужды, поскольку есть куча высокоуровневых утилит, написанных ненаучными людьми.

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

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

мне как раз есть что сказать именно по _этой_ теме. программирование в универах часто преподают придурки, считающие программирование какой-то строгой дисциплиной вроде теоретической математики. Можно программировать математику - само программирование от этого математикой не станет. Можно спокойно копипастать любой код и хакать его наживую, не зная 99% конструкций которые там участвуют, и он все равно будет работать. Множественное наследование - это когда через запятую написано, на что этот класс походит, все, для начала этого достаточно. Объяснять ровно секунды три - на произнесение этой фразы.

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

теме. программирование в универах часто преподают придурки, считающие программирование какой-то строгой дисциплиной вроде теоретической математики.

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

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

Это «объяснение» ни разу ни объяснение: нет ни строгой дефиниции, ни оперативного примера. Это объяснение через синтаксис, который, к тому же, разный у разных языков. Более того, это «объяснение» ни разу не поможет тебе начать модифицировать код, написанный кем-то другим.

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

unanimous ★★★★★
()

в аспирантуре приходится «сдвигаться» на matlab + word

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

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

эээ поясни

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

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

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

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

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

Да-да, расскажи ещё сказок. Почему-то подавляющее большинство в этом самом приличном обществе именно в нём, родимом, статейки и пишут. Заколебали уже. Надоело объяснять дорогим коллегам, что мне пофиг, что ты там используешь, но если ты мне шлёшь статью или пропозал на рецензию, будь добр, сконверти в PDF.

А по ночам гадаю, зачем этот долбаный ODF придумали?

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

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

Затем, что это элемент обучения. Но сдается мне, судя по твоим вопросам, ты вообще не в теме.

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

Я не в теме, как обучаются «на западе». Мы делали, в общем, что хотели, с небольшой подачи научрука (которого видели 2 раза в год - в начале и в конце). И уж тем более я не знаю ни одного языка так, чтобы сказать, что понимаю в нем все значимые аспекты (например, я понимаю перл, но при малейшей возможности заменить его на жаву или целиком скопипастать кусок кода из интернетов, даже непонятно как работающий, - я мгновенно этим воспользуюсь)

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

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

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

бесплатное выполнение чужих задумок - элемент обучения?

Более того, студенты платят за обучение, удивись. Хотя аспиранты компенсируют это, получая зарплату за teaching assistance, так что в итоге остаются даже в плюсе, получая за это примерно 1500 баксов в месяц.

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

unanimous ★★★★★
()

Как можно жить с matlab?!

Ну живем же с линуксом и ничего...

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

Мешает тем, что повышает порог вхождения.

У LaTeX тоже порог вхождения выше, чем у Word, однако...

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

На кой хрен объяснять студентам быдлокод, который построен по принципу «так тоже можно».

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

На кой хрен объяснять студентам быдлокод, который построен по принципу «так тоже можно».

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

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

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

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

является причиной быдлокода.

Что-то совсем с логикой плохо... Быдлокод — это когда определенные инструменты применяются не по делу или, напротив, вместо стандартных инструментов применяются убогие самоделки. Множественное наследование в решении физических задач обычно является избыточным — т.е. применяется не по делу.

unanimous ★★★★★
()
Последнее исправление: unanimous (всего исправлений: 1)

После первой попытки «в лоб» сесть и написать простенький класс в matlba

Диагноз: ООП головного мозга.

Лечить принудительным процедурным и функциональным программированием.

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

Когда ты хочешь заниматься отработкой своих идей, а не сексом с ЯП общего назначения.

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

После первой попытки «в лоб» сесть и написать простенький класс в matlba

Диагноз: ООП головного мозга. Лечить принудительным процедурным и функциональным программированием.

Класс - это конструктор АТД. АТД используются как минимум в процедурном программировании. «Не надо нас лечить» (ц)

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

А тебя лечить никто и не собирался.

Других тоже не надо. По крайней мере, принудительно.

tailgunner ★★★★★
()
30 ноября 2014 г.

идиотская привязка к именам файлов.
Linux тут притом, что octave, как понимаю повторяет всю эту вакханалию.

не, нифига.

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