?

Log in

No account? Create an account

Previous Entry | Next Entry

ushastyi пишет:
…популярность и быстрый рост Джавы во многом обусловлена ее социальностью — легко научиться что-то программировать. В сравнении с внешне похожим, но куда более сложным С++, в умелых руках способным творить чудесные программы и системы.

Социальность не всегда значит хорошо. Если меня спрашивают, а такое порой случается, то в качестве языков для обучения студентов я всегда рекомендую именно асоциальные языки. Их сложность и строгость гарантируют, что человеку придется напрягать мозги и разбираться, а это безвозвратно, к счастью, не проходит. Впоследствии другие языки покажутся простыми.
Три раза дададада!!! Учеба, кстати, в отличие от работы (и научной, и инженерной), есть процесс индивидуальный, или, в этих терминах, асоциальный. Если вам предстоит обучаться вычислительной математике, учитесь программированию на функциональном, асоциальном языке. Второй язык уже может быть любым.

Tags:

Comments

gdt
Dec. 17th, 2011 02:57 am (UTC)
но изучаете-то вы сперва матан, а потом функан. а если вы инженер, то функана вовсе не изучаете.

я ничего не имею против хаскелей. для "общего развития" почему бы и нет, очень интересно. либо для решения каких-то задач. я верю, что у него масса приложений, просто не вижу ему места в вычматах. а изучать его, чтобы потом писать простой код для сложных вещей на матлабе или вылизанный, максимально оптимизированный код на C или фортране для number crunching как-то странно.
fregimus
Dec. 17th, 2011 03:05 am (UTC)
Простите, что вмешиваюсь, но, мне кажется, тут путаница — я назвал вычислительной математикой computer science вообще, а не только вычислительные методы.
gdt
Dec. 17th, 2011 03:08 am (UTC)
тогда не спорю :) по-русски "вычислительная математика" это именно что численные методы.
fregimus
Dec. 17th, 2011 03:29 am (UTC)
Не знал. Когда я учился, кафедра CS называлась «вычислительной математики и кибернетики», или, с народным сокращением, «кибенематики». А computer science как теперь называется?
gdt
Dec. 17th, 2011 03:37 am (UTC)
Как computer science называется, я не знаю. Наверное, так и называется :) А выч. математика -- это numerical mathematics.
thesz
Dec. 17th, 2011 12:21 pm (UTC)
Вот пакет для Хаскеля: http://hackage.haskell.org/package/repa

"Repa provides high performance, regular, multi-dimensional, shape polymorphic parallel arrays. All numeric data is stored unboxed. Functions written with the Repa combinators are automatically parallel provided you supply +RTS -Nwhatever on the command line when running the program."

Код с использованием repa будет отставать на одном процессоре от вылизанного кода на Фортране или С процентов на 30. Но! При включении использования нескольких процессоров (а это ключик командной строки программы, не компилятора) всё станет много чудесней.

То есть, это не сильно сложней MatLab - а чаще и проще из-за строгих типов, и уж много дешевле, - и так же быстро или быстрее, чем C или Фортран.

Как оно работает: http://www.youtube.com/watch?v=v_0Yyl19fiI
gdt
Dec. 19th, 2011 08:26 pm (UTC)
спасибо, интересно. посмотрю.

> всё станет много чудесней.

как вы сами понимаете, насколько станет чудесней, сильно от задачи зависит :) хоть автоматически распараллеливай, хоть руками на MPI -- если нет хорошего алгоритма, чуда не будет.
thesz
Dec. 19th, 2011 08:31 pm (UTC)
Выяснить "хорошесть" алгоритма проще с более простыми в использовании средствами.

"Ручками на MPI" в моём списке таковых находится не в первой десятке. ;)
ushastyi
Dec. 17th, 2011 05:54 pm (UTC)
Знаменитый МИТовский начальный курс computer science был на Scheme. http://mitpress.mit.edu/sicp/ Кажется, недавно они перешли на Python, что вызвало серьезный протест.

Вы все же, как мне кажется, не совсем понимаете идею. Удобен Хаскель или ЛИСП или нет для практических задач -- это не суть важно. Важно то, что они учат принципам, универсальным для всех языков, в наиболее дистиллированном виде.
gdt
Dec. 19th, 2011 02:23 pm (UTC)
Я понимаю вашу идею и признаю, что недостаточно квалифицирован, чтобы иметь хорошо аргументированную точку зрения на тему преподавания computer science.

В любом случае, недоразумение разрешилось -- вы говорили о computer science, я же говорил о numerical mathematics (по-русски -- вычислительная математика), где умение программировать (как правило) играет далеко не первую роль. Навыков процедурного программировании за глаза хватает для большинства задач, возникающих в вычматах. Да, я согласен, что унивесальные принципы знать превосходно, но если выбирать между каким-нибудь advanced курсом программирования или, скажем, функана, человеку, занимаюшемуся вычматами, однозначо стоит брать функан.