2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 13  След.
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:33 


26/01/10
959
TOTAL в сообщении #683864 писал(а):
Какой язык программирования порекомендуете для численного решения дифференциальных уравнений?

Никакой язык программирования не решает дифференциальные уравнения, насколько мне известно. Решают эти уравнения специальные алгоритмы, а на чём они реализованы - другой вопрос. Реализовать их можно самому, а можно воспользоваться готовыми продуктами. Подавляющее большинство уравнений, исследуемых моими коллегами, численно решаются в Maple 16. Сам простыми задачами не занимаюсь, поэтому большего сказать о них не могу. (Возражения по поводу слова "простые" не принимаются.) Но если всё совсем плохо, то всё-равно придется переписывать на C/Asm.

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

Нет, ну в самом деле, бывают люди, которые искренне верят, что, например, на php или java можно решить какую-то серьезную научную задачу, связанную с трудными вычислениями. Поэтому давать конкретные советы с моей стороны будет означать начало холивара. Оно нам надо?

Esp_ в сообщении #683867 писал(а):
Судя по тому. что вы пишите, попробуйте для начала почитать Кернигана и Ри(т)чи. Как только вы почувствуете, что вы понимаете все, что там написано - базовые навыки получены. Язык Си является универсальным в практическом плане, сможете потом на нем решать большое количество ваших задач, которые вам нужны.

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

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:35 


14/01/11
3037
TOTAL в сообщении #683864 писал(а):
Какой язык программирования порекомендуете для численного решения дифференциальных уравнений?


По-моему, обычный C для этих целей вполне подходит.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:39 


22/01/11
309
Sender в сообщении #683880 писал(а):
По-моему, обычный C для этих целей вполне подходит.



Если так рассуждать, то результатов можно очень долго не увидеть.
В пакетах типа Maple или Matlab есть достаточное количество уже готового математического аппарата. Кроме того, интеграция там тоже есть. Еще есть готовые библиотеки, но с этим уже сложнее ситуация.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:43 
Заслуженный участник
Аватара пользователя


23/08/07
5492
Нов-ск
Zealint в сообщении #683878 писал(а):
TOTAL в сообщении #683864 писал(а):
Какой язык программирования порекомендуете для численного решения дифференциальных уравнений?

Никакой язык программирования не решает дифференциальные уравнения, насколько мне известно. Решают эти уравнения специальные алгоритмы, а на чём они реализованы - другой вопрос.
Какой язык программирования порекомендуете для реализации численных алгоритмов, решающих дифференциальные уравнения?

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:46 
Заблокирован
Аватара пользователя


03/03/10

4558

(Оффтоп)

Zealint в сообщении #683854 писал(а):
Если я правильно Вас понял, то не можете.
Есть такой собирательный образ "PHP-программист". Вот оно и получается...

Esp_ в сообщении #683867 писал(а):
попробуйте для начала почитать Кернигана и Ри(т)чи. Язык Си является универсальным в практическом плане
Да поймите вы, это книжка прежде всего о языке - не о программировании.
Esp_ в сообщении #683867 писал(а):
Теперь про обучение: есть такой сайт - проект "Эйлер" (http://projecteuler.net/).
Про это уже писали.
Esp_ в сообщении #683867 писал(а):
Их смысл не в том, что они сложные (хотя сложных то там как раз и не очень много)
А вот это вы зря. Судя по статистике - они кажутся народу сложными. Давайте не дадим топикстартеру лишнего повода переживать ;)

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 16:57 


14/01/11
3037
Esp_ в сообщении #683883 писал(а):
Если так рассуждать, то результатов можно очень долго не увидеть.


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

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 17:28 


26/01/10
959
TOTAL в сообщении #683887 писал(а):
Какой язык программирования порекомендуете для реализации численных алгоритмов, решающих дифференциальные уравнения?

Я уже ответил на этот вопрос, причём несколькими способами.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 17:36 
Заслуженный участник
Аватара пользователя


23/08/07
5492
Нов-ск
Zealint в сообщении #683898 писал(а):
TOTAL в сообщении #683887 писал(а):
Какой язык программирования порекомендуете для реализации численных алгоритмов, решающих дифференциальные уравнения?

Я уже ответил на этот вопрос, причём несколькими способами.
Так какой язык?

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 19:29 


26/01/10
959

(Для TOTAL)

TOTAL в сообщении #683901 писал(а):
Так какой язык?

Вы уж простите, но здесь я дал полный насколько только можно в моём положении ответ. Прежде чем задавать вопрос, нужно сначала убедиться, что получится понять ответ. Не будем же засорять чужую тему, да? Создайте, пожалуйста, свою.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 19:59 


10/04/12
705
TOTAL в сообщении #683864 писал(а):
Какой язык программирования порекомендуете для численного решения дифференциальных уравнений?


OpenCL, откуда юзать не принципиально.

(Оффтоп)

И на Tahiti XT.


-- 14.02.2013, 19:02 --

Zealint в сообщении #683878 писал(а):
Но если всё совсем плохо, то всё-равно придется переписывать на C/Asm.


Ну... наверняка Maple/MATLAB умеет юзать возможности видеокарт, посему связка C/Asm выглядит очень неубедительно.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 21:12 


22/01/11
309
myhand в сообщении #683888 писал(а):
Да поймите вы, это книжка прежде всего о языке - не о программировании.


Автор топика программировать умеет, но не знает языка.
"Знаю алгоритм, не могу закодить".

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 21:21 


05/09/12
2587
Ага, типа "знаю что надо сделать, но не могу объяснить это компьютеру" :D
Продолжая холивар массовые имхоизлияния, из книг в сабжевом случае могу рекомендовать Кнута.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 21:22 
Аватара пользователя


01/04/10
910
Ktina

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

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

Пройдя этот длинный путь я могу дать Вам несколько советов (с которыми многие не согласятся):

1. Найти крайне простую с технической точки зрения среду программирования.
Например, под Windows это может быть сочетание блокнота и компилятора lcc (где для компиляции потребуется всего пару команд).
Избегайте всех этих навороченных IDE, где от количества различных кнопочек и шаблонов проектов голова кругом идёт. Вам надо сосредоточится на чистом программировании.
2. Начните с экспериментов на ассемблере (ДА, ДА! Я серьёзно!). Напишите на нём пару hello world программ. Не надо углубляться до бесконечности. С ассемблером надо просто поиграться, чтобы понять как железка работает на низком уровне. Понять что такое регистры и так далее. Простейшие условные конструкции и циклы. Это всё что надо для начала.
После ассемблера у вас будет какое-то практическое понимание с чем вы работаете. Не давайте пока своим мозгам ООП и прочих абстрактных вещей.
От ООП и уж тем более от Страуструпа мозги человека, который вообще не незнает как работает компьютер, превратятся в желеобразную массу.
3. После ассемблера можете приступить к изучению Си, опять же начните с hello wordlов. Более того, попробуйте посмотреть ассемблерный код своих маленьких hello world программ получившийся после компиляции. Просто посмотрите как выглядит программа на Си и во что её превращает компилятор.
Опять же во все детали не нужно вникать. Просто прочувствуйте с чем вы работаете и что делает машинка и что делает компилятор.
Хорошая книжка "Керниган, Ричи. Язык C" (хотя она не даёт совета как в определенной ОС и с определенным компилятором сделать свой первый hello world, так что с этим придётся поискать в гугле).
4. После того как более менее уверенно на уровне новичка освоитесь с Си и будете понимать что происходит в машине. То вы можете свободно выбрать какой нибудь интерпретируемый язык, такой как Python. Когда будете его изучать, то по крайней мере уже будете более менее понимать что происходит.
5. На абстрактных примерах и олимпиадных задачах далеко не уедешь. Возьмите какую нибудь готовую програмку на языке который вы изучаете (можно что-то веселое типа тетриса). Попробуйте её изменить. Поиграйте с ней. Поэскпериментируйте.

Всё вышеописанное могу завершить таким кратким наставлением:

Найдите максимально простую среду программирования. Не позволяйте забивать свою голову сжиженной массой разнообразных деталей (типа кнопочек в IDE) и абстрактных концепций (типа ООП). Фокусируйтесь на основах, на чистом программировании и на том как работает машинка. Экспериментируйте, пишите простые программы, модифицируйте их. Потом переходите к изменению небольших программ. Экспериментируйте с их изменениями.

И только когда вы уже будете на ты с парой языков программирования (на "ты" уровня новичка). Только тогда можете осторожно приступать к изучению более сложных вещей типа ООП и различных более продвинутых сред программирования.

P.S. Самое сложное для вас во всем это будет выбрать среду программирования, чтобы написать свой первый hello world. Именно начало самый сложный этап.

P.P.S. Девять лет назад меня вдохновляла вот эта знаменитая статья.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 21:30 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ktina в сообщении #683814 писал(а):
Я не принимаю этот мир таким, каков он есть.

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

(Оффтоп)

Xaositect в сообщении #683819 писал(а):
ИМХО, любой используемый на практике язык рано или поздно сранивается с C++ по сложности.

Круто. Может быть, и сравнивается, но с разной скоростью :-)


Ktina в сообщении #683827 писал(а):
Именно со вторым.
Однажды я даже изрекла реплику, вызвавшую продолжительный интенсивный смех окружающих: "я придумала алгоритм, но не могу реализовать его на C". Смех был обусловлен тем, что наиболее трудным моментом для смеющихся было именно придумывание алгоритма.

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

(Оффтоп)

myhand в сообщении #683843 писал(а):
Но это уже не синтаксическая сложность

LOL Так называемая "синтаксическая сложность" - самое лёгкое, что бывает из сложностей языков программирования.

 Профиль  
                  
 
 Re: Программирование для неудачников
Сообщение14.02.2013, 21:31 
Аватара пользователя


01/12/11

8634
Ой, я тут такое количество советов получила, что ещё больше растерялась :oops:
С одной стороны, глубоко благодарна всем, не поленившимся написать.
С другой, даже не знаю, с какого совета начать...
Честно говоря, не ожидала, что моя тема вызовет столь бурный резонанс.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 193 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 13  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group