Форум Иара Эльтерруса
Текущее время Чт, 28 Мар, 2024 18:49

Основы программирования для троглодитов)

 
Ответить на тему    Список форумов Ветер Фантазии -> ТехЦентр
Предыдущая тема :: Следующая тема  

Автор Сообщение
Иверень
Волонтёр


Пол: Пол:Женский

Зарегистрирован: 31.01.2008
Сообщения: 558
Откуда: Москва... когда-то


СообщениеДобавлено: Чт, 04 Мар, 2010 16:31    Заголовок сообщения: Основы программирования для троглодитов) Ответить с цитатой

После долгих шаманских действий по борьбе со всеми и всяческими вирусами, восстановлений системы, безуспешных загрузок и прочих неприятностей, при абсолютно потребительском взгляде со стороны юных троглодитов (мы всё равно ничего не понимаем, с нас и взятки гладки ) я решила это дело коренным образом исправить. И всё-таки посмотреть вместе с ними, что же там в глубине глупого железного ящика творится. Заодно и самой уточнить некоторые неясные моменты, а не ходить как белудж со спутниковым мобильником.
После некоторых раздумий я решила начать с принципа действия машины Тьюринга. В Википедии про неё довольно хорошо объяснено, но троглодитов иногда заклинивает в самых неожиданных местах, поэтому хорошо бы иметь какие-то альтернативные объяснения (не в лоб, так по лбу Smile)
Вопрос: пытался ли кто построить эту самую машину дома, для наглядности, и что из этого вышло.
Какую хорошую литературу - на самом начальном уровне, у меня троглодиты не то чтобы глупые, но жутко необразованные - для того, чтобы понять, что такое программирование, и что происходит внутри компа. вы можете посоветовать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Автор Сообщение
reiten
Дварх-майор
Дварх-майор

Возраст: 34
Пол: Пол:Мужской

Зарегистрирован: 28.01.2008
Сообщения: 447
Откуда: Украина, Киев


СообщениеДобавлено: Чт, 04 Мар, 2010 18:24    Заголовок сообщения: Ответить с цитатой

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

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

А вот с литературой я не помогу - сам я в свое время изучал программирование совершенно антипедагогическим образом - с какой-то книги "Visual Basic для студентов", где конспективно описывались конструкции языка без каких-либо пояснений, зачем это все надо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Автор Сообщение
geher
Идущий
Идущий

Возраст: 53
Пол: Пол:Мужской

Зарегистрирован: 29.01.2008
Сообщения: 2406
Откуда: Курск


СообщениеДобавлено: Чт, 04 Мар, 2010 18:51    Заголовок сообщения: Ответить с цитатой

На предмет изучения машины Тьюринга есть программа
http://freesoft.ru/?id=671189
Народ хвалит.
Конечно, это не абсолютная реализация машины, а лишь некоторое приближение (как минимум не хватает бесконечной ленты).
Но к реальному компьютеру отношение имеет весьма малое и косвенное.
Хотя при обучении программированию некоторая польза есть: для расширения кругозора и предотвращения замыкания на определенном фиксированном наборе навыков.
Ведь программирование вообще - это не только кодирование на каких-то языках программирования.
Если процесс с машиной Тьюринга пойдет, можно еще познакомить с основами лямбда-исчисления (тоже относится к программированию и ближе к жизни, чем машина Тьюринга). Если нет, то лучше заняться чем-то более приземленным.

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

_________________
Тот, кто еще в пути, уже в пути.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Автор Сообщение
agrael
Бета-координатор
Бета-координатор


Пол: Пол:Мужской

Зарегистрирован: 14.07.2008
Сообщения: 2816
Откуда: Город 313


СообщениеДобавлено: Чт, 04 Мар, 2010 19:49    Заголовок сообщения: Ответить с цитатой

geher писал(а):
Большинство книг, которые предлагаются для начального обучения скорее способствуют закреплению обезьяньих навыков (жми эту кнопку, потом ту...).

Есть, есть хорошие книги! Но! Одно оченно большое НО - они на языке оригинала, т.е. в основном на аглицком. Хотя первое, что надо знать программеру - это английский! И это не обсуждается - ВСЕ абсолютно операторы и конструкции требуют этого знания. Более того, традиционно наши "троглодиты" изучают предмет, разбирая на запчасти творения буржуинских коллег. Там зачастую комментарии оказываются очень нужными, а они на ангельском! Ниже несколько советов. И - еще раз посторю - их надо читать в оригинале, а ни в коем разе не в переводе! А то там такого напереводят - мало того, что подстрочником, так еще и неправильно.

Peter Prinz. Ulla Kirch-Prinz. A complete guide to programming in C++ - в инете лежит, погугли. Это очень сжатый справочник-путеводитель. Зато в нем легко найти то, что в данный конкретный момент надо.

Francis Glassborrow - у него целая серия книг, вот несколько названий: "You Can Do It! - A Beginner's Introduction to Computer Programming", "You Can Program In C++ - A Programmer's Introduction"

Ivor Horton. "Beginning.C.From.Novice.to.Professional.4th.Edition.Oct.2006"

Bruce Eckel - у этого целая серия книг Thinking in... и далее - C++, Java и т.п.

Все эти книги свободно скачиваются в интернете. Кстати, насчет Java. Помнится, году в 1998 мне ребята-программеры знакомые говорили, что С++ - это уже вчерашний день, перспектива за Java. Wink Конечно, ничего такого не случилось, но Java действительно имеет кучу преимуществ - во-первых, SUN совершенно свободно позволяет скачивать все библиотеки и движок и вообще. Во-вторых, для OpenSource есть прекрасная оболочка по типу VisualBasic - и так же легка в освоении, называется NetBeans, скачивается опять-таки у SUN.

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

И самое главное - учиться программерству абстрактно или на каких-то надуманных примерах типа Hello, World! совершенно бессмысленно и непродуктивно. Надо задаться какой-то целью, причем нужной. Например, кто скачивал книги у Мошкова, знают - там очень много в "досовском" формате, т.е. строки "отформатированы" с помощью CR. Да еще и куча ненужных пробелов и т.п. Смогут они сделать маленькую программулину, которая будет делать нормальные абзацы, убирать лишние пробелы и вставлять недостающие после точек-запятых? Мне как-то приспичило, и я нарисовал такое чудо на VB, а потом переписал на Java. Если интересно, могу намылить, с исходниками. Там есть еще простор для творчества. Wink

Чуть не забыл - у меня дети постигают азы алгоритмов, рисуя карты для игрушек, которые это позволяют - Герои ММ, Эпоха Империй и т.п. Особенно Герои - там легко пишутся все скрипты, конструктор очень удачный, хотя и не всегда понятный.

_________________
Все будет так, как должно быть, даже если будет иначе
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Автор Сообщение
reiten
Дварх-майор
Дварх-майор

Возраст: 34
Пол: Пол:Мужской

Зарегистрирован: 28.01.2008
Сообщения: 447
Откуда: Украина, Киев


СообщениеДобавлено: Чт, 04 Мар, 2010 20:16    Заголовок сообщения: Ответить с цитатой

geher, agrael
При всем уважении, вы вообще читали первый пост?
Машина Тьюринга, лямбда-исчисление, холивары C++ VS Java, английский язык для программистов, абстракция от железа.

Может быть начать с параллельного программирования, GRID и написания драйверов для usb-устройств?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Автор Сообщение
geher
Идущий
Идущий

Возраст: 53
Пол: Пол:Мужской

Зарегистрирован: 29.01.2008
Сообщения: 2406
Откуда: Курск


СообщениеДобавлено: Чт, 04 Мар, 2010 22:52    Заголовок сообщения: Ответить с цитатой

reiten писал(а):
geher, agrael
При всем уважении, вы вообще читали первый пост?
Машина Тьюринга, лямбда-исчисление, холивары C++ VS Java, английский язык для программистов, абстракция от железа.
Насколько я понимаю, детишки только начинают осваивать сей пласт реальности. И тут возникает вопрос, куда направится их интерес потом. Ведь компьютер - это не просто железка, под которую можно писать программы на каком-то языке программирования, но и весьма полезный инструмент.
Если интерес будет скорее в плоскости "железа", то разумно ознакомиться именно с начинкой компьютера (хотя бы в плане нездорового любопытства).
Если интерес больше к математической составляющей - добро пожаловать в теорию, включая упомянутое лямбда-исчисление.
Если речь именно о написании программ, то следует сосредоточиться на методах программирования, имеющих практическое применение.
А если подход совершенно утилитарный (есть задача, есть умные люди, разрабатывающие инструменты под задачу, а наш клиент - всего лишь квалифицированный пользователь), то программирование вообще ни к чему, достаточно ознакомиться с основными моментами использования компьютера, с общими принципами построения пользовательских интерфейсов с точки зрения их использования.

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

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

_________________
Тот, кто еще в пути, уже в пути.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Автор Сообщение
Iwan
Поэт форума
Поэт форума

Возраст: 54
Пол: Пол:Мужской

Зарегистрирован: 27.05.2008
Сообщения: 329


СообщениеДобавлено: Пт, 05 Мар, 2010 01:28    Заголовок сообщения: Ответить с цитатой

agrael писал(а):
Java действительно имеет кучу преимуществ - во-первых, SUN совершенно свободно позволяет скачивать все библиотеки и движок и вообще. Во-вторых, для OpenSource есть прекрасная оболочка по типу VisualBasic - и так же легка в освоении, называется NetBeans, скачивается опять-таки у SUN.

Да нету больше Sun, хотя дело ее будет продолжать жить в др. компании (зайдите на http://sun.com).

_________________
Если ничего для себя не усложнять, то все вокруг оказывается простым и понятным.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Автор Сообщение
Иверень
Волонтёр


Пол: Пол:Женский

Зарегистрирован: 31.01.2008
Сообщения: 558
Откуда: Москва... когда-то


СообщениеДобавлено: Пт, 05 Мар, 2010 07:15    Заголовок сообщения: Ответить с цитатой

geher писал(а):
Насколько я понимаю, детишки только начинают осваивать сей пласт реальности. И тут возникает вопрос, куда направится их интерес потом. Ведь компьютер - это не просто железка, под которую можно писать программы на каком-то языке программирования, но и весьма полезный инструмент.

geher, вы меня поняли!
Они/мы действительно только начинают осваивать этот пласт. И вопрос в том, смогут ли вообще освоить, или умение пользоваться клавиатурой останется на уровне умения пользоваться шаманским бубном. Twisted Evil
И дело не только в том, чтобы выучить какой-нибудь язык, или решить, какой лучше, но и в том, чтобы понять, почему можно программировать вообще.
Я в состоянии объяснить как действует, допустим, винт Архимеда, могу довести до сведения юных мозгов теорию отностительности (без расчётов ), но вот рассказать, что гудит и трещит внутри таинственного железного ящика, и почему он может считать и рисовать, у меня не очень получается)))
Цитата:
многофункциональный гибрид калькулятора, игрушки и печатной машинки.

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

Есть, есть хорошие книги! Но! Одно оченно большое НО - они на языке оригинала, т.е. в основном на аглицком.

C английским как таковым ни у меня, ни у детей особых проблем нету, но! на уровне, допустим, Конан-Дойля почитать или "Doctor Who" посмотреть. а вот фраза типа
Цитата:
Эту трудность преодолел Д. С. Скотт, построив понятие области D (полной решётки или, более общо, полного частично упорядоченного множества со специальной топологией) и урезав D → D до непрерывных (в имеющейся топологии) функций
для меня звучит как на нганасанском Embarassed Или на древнешумерском... Из русского - только грамматика Sad. И в английском будет то же самое
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ]
Автор Сообщение
Руслан Лодинов
Дварх-полковник
Дварх-полковник

Возраст: 34
Пол: Пол:Мужской

Зарегистрирован: 03.02.2010
Сообщения: 734
Откуда: Россия, Новосибирск


СообщениеДобавлено: Пт, 05 Мар, 2010 15:20    Заголовок сообщения: Ответить с цитатой

Иверень писал(а):
чтобы понять, почему можно программировать вообще

Оч просто )))) 0101110011100000

Электрончики в сети
Скачут, как в батуте
И поэтому лишь только
Думает компьютер
©


К теме: на самом деле, вот честно - я лично удовлетворился объяснениями средней школы о переменной силе тока в микросхемах, и о том, что, усложняя сию простую вещь, мы добиваемся весьма изощрённой системы современных компьютеров...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение [ скрыт ] Посетить сайт автора
Автор Сообщение
agrael
Бета-координатор
Бета-координатор


Пол: Пол:Мужской

Зарегистрирован: 14.07.2008
Сообщения: 2816
Откуда: Город 313


СообщениеДобавлено: Пт, 05 Мар, 2010 17:53    Заголовок сообщения: Ответить с цитатой

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

Тогда все же нужно про кучу триггеров рассказать, которые составляют ячейки-регистры, и как там с помощью управляющих сигналов переключают (сдвигают) туда-сюда, отсюда двоичная логика и все прочее. Ну и дальше пойдут всякие стековые заморочки... Не знаю, надо ли. Rolling Eyes Ну и блок-схему компа на уровне проц-шина-память-периферия показать.
geher писал(а):
упомянутые книги скорее справочники, чем учебники.

Ну, Эккель все же очень доступно объясняет, не даром оно учит ДУМАТЬ на языке программирования, как видно из названия. И потом, не зря же я про игрухи-стратегии рассказывал. Там вообще все ясно, как три копейки.

_________________
Все будет так, как должно быть, даже если будет иначе
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  
Автор Сообщение
Вадим
Бета-координатор
Бета-координатор

Возраст: 53
Пол: Пол:Мужской

Зарегистрирован: 01.02.2008
Сообщения: 2044
Откуда: Правый берег США


СообщениеДобавлено: Сб, 06 Мар, 2010 15:06    Заголовок сообщения: Ответить с цитатой

Я подозреваю, что у ваших троглодитов та же особенность, что и у моих - они сильно повёрнуты в математику. Я своему старшему поставил задачу - написать вычисление фибоначи для произвольного числа. С фибоначи, как и вообще с алгеброй, у него проблем не было, а вот с программированием - близко к абсолютному нулю. За день, вооружившись учебником по питону и гуглём, сын произвёл программу, которая (как я и подозревал), вычисляла всё рекурсией, причём размножающейся, вида def f(n): return f(n-1)+f(n-2). А потом началась реальная учёба. Запустили программу для двух, трёх, потом для семи. Работает правильно. Потом запустили для 100. Подождали пол-часа, потом я спросил, почему, для того, чтобы сложить сотню чисел, его программе потребуется столь много времени. Выучили первый урок - программирование это не математика. Математики не знают слова эффективность, а програмисты с ним засыпают и просыпаются. И то, что математически правильно, на реальном компьютере может вычисляться дольше, чем время жизни вселенной. Научились (хочу надеяться) трассировать вычисление на бумажке. В процессе рисования циферок в квадратиках под шумок приблизились к пониманию понятия переменной (ячейки памяти), и отличию присваивания от равенства. Следующей задачей было переписать программу, используя только две переменные под предыдущие значения фибоначи (табличку из двух колонок на бумаге). Заодно изобрели цикл... Потом - вычисление корня квадратного из пяти, используя наконец-то заработавшую эффективно функцию фибоначи (посмотреть на результат f(большое_число)/f(большое_число-1) и f(большое_число-1)/f(большое_число), записать зависимость fi-1=1/fi, решить квадратное уравнение, потом короткое путешествие в википедию в статью о золотом сечении) - легко, там как раз почти чистая алгебра... Сейчас он выучил метод монте-карло и модуль random и пытается проверять школьные задачки на вероятности методом научного тыка (пардон, то есть монте-карло).
_________________
If I sit the way other people do, my reasoning ability drops by 40 percent.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение  

Показать сообщения:   
Ответить на тему    Список форумов Ветер Фантазии -> ТехЦентр Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы

Powered by phpBB © 2001, 2005 phpBB Group.
Theme Designed By Arthur Forum