Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как научиться программировать со слабым математическим аппаратом? (http://forum.oszone.net/showthread.php?t=180338)

Mr666 21-12-2007 13:17 701195

Как научиться программировать со слабым математическим аппаратом?
 
Привет всем!

Интересует информация (ввиде книг/статей), где даны основные алгоритмы. Я знаю такую литературу как "Построение и анализ алгоритмов" или "Исскуство программирования", но там очень много чисто теоретической математики. А у меня с математикой не очень, поскольку там большинство математических выводов абсолютно необъясняются.
Хотелось бы информацию по основным алгоритмам в более доступном виде, где более менее понятно человеку не имеющему классные знания в математике.

P.S. Язык программирования не важен, так как основная сложность в изучении программирования это логика алгоритмов, а не программные конструкции конкретного языка.

DillerInc 21-12-2007 18:00 701365

Mr666, а можно задать риторический вопрос: "Для чего вы хотите использовать программирование?"
Например.
Кто-то просто перетаскивает кнопки и прочее на форме в среде разработки Delphi и считает,что он программист.Математика,понятно,остаётся не у дел.
Кто-то внимательно читает мануалы Интел,чтобы понять,как правильно обрабатывать программные прерывания на уровне ядра,и тоже может назваться программистом.Математика снова тихо курит в сторонке.

Теперь ещё один вопрос к остальным участникам: "Какая область программирования,где активно требуется знание математики(хорошее знание)?"
И: "Что же из себя представляют те некие алгоритмы,где требуется эта математика?".

azbest 22-12-2007 15:56 701818

Начни с информатики для школьников. Там много практических несложных задач и основы построения алгоритмов.

Diseased Head 22-12-2007 18:12 701892

Mr666, скажу вам честно. У меня иногда складывается впечатление что сами авторы некоторых книг, не до конца секут в математике. Например есть у меня одна книга: "ДИСКРЕТНАЯ МАТЕМАТИКА дла програмистов". Так там автор вообще загнул, он там пишет на синтезированном "програмно-матиматическом" языке. Не буду говорить уверенно (потому как сам не спец), но помоему, бред. Или может я чё не понял...

DillerInc, а я скажу сильнее. Плохо зная математику ("общеобразовательную") можно даже и коды писать (Win32 и пр.). Я вот когда изучал C++, математику плохо знал, и при этом очень хорошо получалось.

Но что-бы быть очень хорошим программером, надо математику знать хорошо.

Цитата:

Цитата DillerInc
Теперь ещё один вопрос к остальным участникам: "Какая область программирования,где активно требуется знание математики(хорошее знание)?"
И: "Что же из себя представляют те некие алгоритмы,где требуется эта математика?". »

Области: графика, звук, игры, мат.проги, физ.проги, хим.проги... Да и много где ещё. И чем сложнее прога, тем более в ней математики (обычно).

Алгоритм? Ну например, приближённое вычисление интеграла.

А может вы и не знаете, но такие вещи как: алгоритм, объект, система, множество, тоже относятся к математике.

Mr666 22-12-2007 20:30 701943

Скажу так. Точного направления в программировании я не выбрал. Но какие бы книги по конкретным языкам не читал я каждый раз сталкивался с непреодолимой трудностью. Трудность не в освоении синтаксиса языка, а построении любых, даже самых простых программ. То есть я не знаю никакой дисциплины. Надо как то правильно ориентироваться в логике построения программ, что бы не писать чёрт знает что. В книге Кнута и прочих знаменитых писателей об алгоритмах я увидел описание того, как именно надо программировать. Но там было очень наворочено и явно расчитана для студентов, которым в вузе преподают математику.
Я же хочу книжку об алгоритмах, только по проще чем Кнут. То есть всё что я хочу, это книгу по алгоритмам (или про то как надо правильно программировать), только более доступную для человека, который не заморочен математикой.

Admiral 22-12-2007 21:22 701965

Цитата:

Цитата Diseased Head
Алгоритм? Ну например, приближённое вычисление интеграла. »

Такие алгоритмы известны (Алгоритм прямоугольников, трапеций, Симсона. Придумывать можно только свой новый.) Или подразумевается его практическая реализация?

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

kim-aa 22-12-2007 21:34 701971

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

Цитата:

Цитата DillerInc
"Какая область программирования,где активно требуется знание математики(хорошее знание)?" »

Реляционные базы данных - требуют знания реляционной алгебры.
Это мой извечный кошмар.
Я не встречал еще ни одного программиста на 1С, который бы "sensored", не пытался работать с циклами.
Думал в SAP R/3 по другому.

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

Господа!
Учите, реляционную алгебру и опeрации со множествами.
Да же 1С, еще в версии 7.7 писала, что встроенный в движок оптимизатор запросов не умеет работать с циклами. Точнее ни один оптимизатор не умеет, надеется, понимаешь, на человеческий разум.
Почему тысячи ситемных администраторов вынуждены занимаються эзотерическим сексом с MS Terminal Server в тщенной попытке ускорить милионны вложенных циклов которые вы нахренашили в теле процедур 1С?
Администраторы Sun и IBM рыдают над мультипроцессорными мeйнфреймами, которыe теоретически с легкостью могут расчитать создание Земли Господом Богом, но средней руки ABAP-программер, не напрягаясь, отправляет систему на полтора дня в кому одним квартальным отчетом.
Почему вы так плохо учились, господа?!

Mr666 22-12-2007 23:25 702033

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

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

Или те же рекурсивные алгоритмы, как их писать, методы (а не от балды) их эффективного построения.

Всё это описывается в таких книгах как "Алгоритмы: Построение и анализ":

http://www.kalinin.ru/comment/books/11_08_00.shtml

Но там для неподготовленного человека немного круто написано. Хочется перед тем как осваивать такие книги, что нибудть попроще (для того, что бы уже начать понимать алгоритмы).

Oleg_SK 23-12-2007 03:40 702135

IMHO, есть достаточно много областей программирования, где достаточно знать такие элементарные математические операции как сложение-вычетание, умножение-деление, проценты... Некоторое время назад я около двух лет работал 1С-программистом, и никакие более сложные познания математики мне при этом не понадобились (и я их уже забыл)... Я не говорю тут о таких мат. понятиях, которые неразрывно связаны с программированием (например: цикл, рекурсия, массив, функция и т.д.), т.к. их понимать нужно по любому, но опять же IMHO для этого не нужно напрягаться, т.к. и так все интуитивно понятно или объясняется в соответствующих учебниках по программированию. Для своего удовольствия программирую на Ассемблере под Win32, и также не испытываю особых потребностей специально изучать математику.

DillerInc 23-12-2007 16:49 702382

Вот,вспомнил одну из областей программирования,где необходимы глубокие познания в математике -- криптография.И соответственно криптоанализ.

Цитата:

Цитата Mr666
как же всё таки научится эффективно программировать на любом языке. »

...по-моему,такая постановка вопроса -- это всё равно,что тыкать пальцем в небо.У программирования огромное число задач,каждая из которых требует своего подхода.
Короче,я бы посоветовал наверно почитать Джеффри Рихтера "Создание эффективных win32-приложений" -- считается очень достойным материалом.

Mr666 23-12-2007 19:36 702453

Наверное я всё таки не смог правильно сформулировать свой вопрос. Но попытаюсь ещё раз, так как для меня это очень важно. Например, для себя я выбрал C++ по книге Бьерна Страуструпа. В процессе изучения (только на начальном этапе) я понял, что мне чего то очень нехватает. Сложностей в освоении синтаксиса у меня не возникает. Но программировать нормально не получается. Любая программа получается кривой и пишется очень долго, а потом тестируется тоже очень долго. Это я говорю об очень маленьких программах. Я не сторонник тупого табуреточного подхода идти напролом и делать так дальше, так как совершенно очевидно что у меня нет никакой системы, нет правильного подхода к построению программ. Может и можно вырасти и без этого, но пополнять и без того огромную армию криворуких программистов мне как то не хочется. Поэтому мне нужна доступная литература по тому как программировать быстро и эффективно (только не надо спорить, что быстро не бывает, думаю вы меня поймёте). В любой программе, на любом языке, есть общие черты. Мне нужно уловить именно те особенности, что бы почувствовать, что я начинаю понимать, что такое программирование.

DillerInc 23-12-2007 20:01 702463

Цитата:

Цитата DillerInc
я бы посоветовал наверно почитать Джеффри Рихтера "Создание эффективных win32-приложений" »


Mr666 23-12-2007 20:34 702476

Посмотрел книжку. Могу предположить, что это достаточно интересная книга. Но дело в том, что я собираюсь писать под *nix. Есть ли аналогичная книга для Unix like систем?

P.S. Понимаю, что этот вопрос подходит под раздел "Программирование в *nix", но кто знал, что в теме по общему вопросу появится такой вопрос.

azbest 23-12-2007 21:51 702524

Цитата:

но пополнять и без того огромную армию криворуких программистов мне как то не хочется
А зачем заранее себя настраивать на криворукость. Если конкретно знаешь что нужно сделать и есть хоть малейшее представление о программировании - пробуй. Тут ведь главное практика. Я начал с "книжки" для 10-классников. Мне попезло там была куча простых задач и на доступном языке - как всё это "запрограммировать". А дальше от простого к сложному. Да - самое главное сначала "набей руку" в написании (готовые шаблоны и тд) а потом уже собирай заказы а то если наоборот - можно сесть в лужу.

Oleg_SK 23-12-2007 21:56 702527

Цитата:

Цитата Mr666
Например, для себя я выбрал C++ по книге Бьерна Страуструпа. »

Это плохой выбор для знакомства с языком (хотя Бьерн Страуструп и является создателем этого языка, но похоже не умеет объяснять его доступно). IMHO, читать эту книгу стоит уже после того, как освоишь этот язык.

Diseased Head 23-12-2007 21:58 702528

Цитата:

Цитата Mr666
Любая программа получается кривой и пишется очень долго, а потом тестируется тоже очень долго. Это я говорю об очень маленьких программах. »

Хм... А что вы под этим подразумеваете? Я вот начинал с простых задач. Вроде: "отсортировать элементы массива по возрастанию".

Oleg_SK 23-12-2007 22:12 702535

Mr666
Цитата:

Цитата Diseased Head
Вроде: "отсортировать элементы массива по возрастанию". »

Для начала можно попробывать элементарную пузырьковую сортировку. Потом можно будет перейти к более сложным, но и более эффективным алгоритмам сортировки. А вообще, если вас интересуют именно алгоритмы, то советую почитать сборник книг Дональда Кнута.

Mr666 10-01-2008 12:12 713142

Я нашёл СУПЕР книгу по программированию!!! Это именно для людей, которые хотят понять как программировать не х** знает как, а именно эффективно. Купил даже бумажный вариант.

Книга Стива Макконела: Совершенный код

Рекомендую всем!

Admiral 10-01-2008 21:10 713655

Mr666, в продолжение возьми "Жемчужины программирования" Джона Бентля.

NagLovik 30-01-2008 13:50 728998

Формулировка вопроса: я - пользователь без каких -то особых навыков работы, есть необходимость создания небольшой програмки для формирования отчетности (сводной информации). 10-15 показателей, 3-4 графы, несколько филиалов-организаций, от которых поступает информация. Слышал что можно на базе Excel что-то сварганить. Подскажите литературу, статейки да и с чего вообще начинать. Хотелось бы все самому освоить.

сумрак 11-07-2010 16:35 1451209

Кодинг без знания математики...
 
Интересует такое явление...
Как часто в жизни кодера ему может пригодится математика? Я не говорю о программировании микропроцессоров или программ для сверх быстрых расчётов. Скорее о более мирном кодинге софта, офисного, домашнего, под мобильники, итд... Сам учусь на прогера но увы в школе (как и многие из нас) халявил...и математику (в частности алгебру) очень запустил.

Glareone 11-07-2010 16:57 1451218

Математика(будь то школьная алгебра или Спец Главы Мат Анализа)-воспитывают в человеке умение мыслить логически. Любая,даже самая простая программа, основана на логическом мышлении.

Да,возможно, Вам никогда в будущем не понадобится писать алгоритмы решения сложных сходящийся рядов, матриц,СЛАУ, но при изучении алгоритмов поиска,сортировки,работы с базами данных-математика всплывет, я вас уверяю.

сумрак 11-07-2010 16:59 1451221

Цитата:

Цитата Glareone
математика всплывет, я вас уверяю. »

т.е всё же придётся всё нагонять как я понимаю? А мыслить логически без математики нельзя?))

lxa85 11-07-2010 17:23 1451240

мыслить логически можно...
Решать нельзя.

Как только потребуется рассчитать некую цифру, будет "зачада".
В повседневной нужде 9ти классов образования хватит. Так же очень поможет справочник Выгодского.
Ну а что бы не быть дураком (не в обиду), математику(алгебру, геометрию) придется выучить. Это базовые понятия и навыки, без них никуда.

Glareone 11-07-2010 17:24 1451242

Цитата:

Цитата сумрак
А мыслить логически без математики нельзя?)) »

Вы далеко не первый, кто этого хочет. В своей жизни не встречал ни 1 человека, кто бы на профессиональном уровне владел программированием и не знал прекрасно математику. Может,такие уникумы существуют, может даже вы к ним будете относиться. Но лично мне в жизни не довелось повстречать их :)

Drongo 11-07-2010 21:50 1451375

сумрак, Такая темка у нас есть в программировании - и посему я объединяю темы.

xserv 19-07-2010 23:14 1456367

Цитата:

Цитата Mr666
Скажу так. Точного направления в программировании я не выбрал. Но какие бы книги по конкретным языкам не читал я каждый раз сталкивался с непреодолимой трудностью. Трудность не в освоении синтаксиса языка, а построении любых, даже самых простых программ. То есть я не знаю никакой дисциплины. Надо как то правильно ориентироваться в логике построения программ, что бы не писать чёрт знает что. В книге Кнута и прочих знаменитых писателей об алгоритмах я увидел описание того, как именно надо программировать. Но там было очень наворочено и явно расчитана для студентов, которым в вузе преподают математику.
Я же хочу книжку об алгоритмах, только по проще чем Кнут. То есть всё что я хочу, это книгу по алгоритмам (или про то как надо правильно программировать), только более доступную для человека, который не заморочен математикой. »

У меня такая-же проблема когда-то была, есть выход : брать готовую рабочую программу (исходники), компилировать, и гонять под отладчиком, допустим, ты уже знаешь, что она должна дать на выходе, но ты не знаешь как она это делает, это для тебя "ящик пандоры", а прогон (трассировка) под отладчиком, поможет понять работу основных управляющих структур : следование, ветвление (выбор - if, if-else, switch), повторение (циклы - while, do-while, for), а так-же, вызов функций (надо точки прерывания ставить), изменение переменных и.т.д.

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

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

Больше практики, методом проб и ошибок - ключ к успеху.

Delirium 20-07-2010 01:54 1456448

На мой взгляд, из "математик", если обобщенно, программисту необходимы несколько предметов:
1. Алгебра и математический анализ. К примеру, в программах для расчета каких либо коэффициентов и прочего просто необходимо знать матан.
2. Дискретная математика и логика. Без этого вообще никуда - от построения и понимания общей логики до создания графов, деревьев, и прочей прелести :). К слову, мой друг, когда писал одну очень серьезную программу , дискретку до дыр затер.

Все опять же зависит от прикладной задачи. Я, к примеру, писал как то для себя программу по автоматической удаленной установке Radmin'а - там математики, как таковой, ноль. Тупо скопировать, вставить, обработать и т.д. И хотя математика не использовалась, на выходе получилась очень маленькая и удобная программка. Или программы-клиенты по работе с базами данных - там тоже нет сверхматематики - вывести данные, вбить новые, почитать и т.д.

Mr666, Вам не нужно забивать голову Кнутом или мыслями о том, что из высшей математики вам необходимо. Лучше всего - понять, какие задачи вы будете реализовывать в качестве программиста.

Tau_0 21-07-2010 03:42 1457230

сумрак
Цитата:

Цитата сумрак
т.е всё же придётся всё нагонять как я понимаю? А мыслить логически без математики нельзя?)) »

А зачем Вам эта головная боль --- всякая там математика, да м программирование тоже . Мол другие умеют, а чем я хуже…???... Поверьте, --- ума в этом немного, и не в этом счастье.

И с какой стати Вы решили, что человек мыслит логически --- в школе рассказали…???... Так ведь вроде как нет такого.

Тренированный человек может логично излагать, то до чего он своей соображалкой дощёл. На уровне логики он ВСЁ переосмысливает и сам себе ЭТО формулирует, А потом и другим тоже разъясняет. А вот как он додумался --- непонятно.

Специалисты по искусственному интеллекту давно в это дело упёрлись --- появились когнитивные науки.
А ежели б человек мыслил логически, то был бы таким же идиотом, как машина. Если Вы что-то интересное придумали, то без машины оно большего стоит…

mrcnn 28-07-2010 16:06 1462265

Цитата:

А зачем Вам эта головная боль --- всякая там математика, да м программирование тоже . Мол другие умеют, а чем я хуже…???...
Все зависит от того, что вы программируете :) Для простейших задач математика не очень нужна, но в серьезных задачах без нее никак не обойтись.

Цитата:

На мой взгляд, из "математик", если обобщенно, программисту необходимы несколько предметов
Вы правы, но еще нужны численные методы, аналитическая геометрия, линейная алгебра, а также физика. И как ни странно, еще нужно хорошее знание философии. Философия нужна для проектирования и построения отношений между понятиями, а чтобы построить отношения сперва нужно выделить эти понятия.
И невероятно хорошее логическое мышление, чтобы грамотно спроектировать классы и отношения между ними.. Проектирование приложения довольно трудоемкая задача.

lxa85 28-07-2010 17:18 1462312

mrcnn, тут порой проблема собственные мысли правильно изложить (чтобы просто, понятно, доступно, и ничего лишнего), а ты про философию и проектирование приложений! :teeth:

sav_mon@twitter 31-03-2013 16:52 2122867

Советую курс "Программировать может каждый"

lxa85 31-03-2013 19:04 2122994

sav_mon@twitter, я надеюсь это только начало. Потому что из того что есть, программировать научиться нельзя! Т.к. на предложенном ресурсе в самой начальной форме разобран интерфейс Delphi 7. С указанием на некоторых мифических программистов, считающих что лучше этой среды ничего нет.

Delirium 01-04-2013 14:11 2123476

Открываем Intuit.ru и начинаем читать и учиться. Построено уроками да еще и бесплатно. На мой взгляд, отличнейший ресурс.

Tau_0 02-04-2013 00:04 2123980

Цитата:

Цитата sav_mon@twitter
Советую курс "Программировать может каждый" »

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

Моё мнение, --- прогаммированию никакие курсы и самые хорошие книги не научат. Хотя книги нужны как справочники и для систематизации знаний...

Для того, чтобы научиться (можно и с нуля) нужна реальная задача, которая для тебя будет профессиональной работой. Тут хочешь/не_хочешь, а это работа и её надо делать ежедневно. Поневоле научишься. А если это делать нравится, то прогресс быстро пойдёт.

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

А по другому --- одно баловство...

Имхо так.

DVDshnik 02-04-2013 06:26 2124048

Цитата:

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

Tau_0 06-04-2013 13:40 2126787

Цитата:

Цитата DVDshnik
Цитата:
Как научится программировать
Русский язык в данном случае тоже хромает. »

Долго ломал голову...:gigi::gigi::gigi:
Вы это имели в виду...???...
научится <===> научитЬся

Drongo 06-04-2013 18:53 2126983

Название темы сменил и продолжаем разговор по существу. :)


Время: 21:27.

Время: 21:27.
© OSzone.net 2001-