Printable Version of Topic
Click here to view this topic in its original format
Forums > Компьютерная техника > Книги по компьютерам для ребенка


Posted by: VxWorks on 26-01-2007, 19:54
Попросили на работе провентилировать вопрос - есть пацан 10 летний. Интересуется компами, в смысле программирования а не Инета (которого у него и нет - грозный папа, начитавшись всяких ужасов просто отказался от сервиса). Папа в компах ни в зуб ногой (бухгалтер), а сын на нервы ему давит - хочу учиться программированию.

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

Posted by: Lord KiRon on 26-01-2007, 20:24
10 лет ... пусть начинает с Lego (http://www.amazon.com/Core-LEGO-MINDSTORMS-Programming-Platform/dp/0130093645

Posted by: dmvn on 26-01-2007, 21:45
Хм... Я в 10 лет Бейсик учил... :) Честно. Про книжку подумаю, повспоминаю, чего я такого читал в таком возрасте. Кажется, мало чего, мне мой папа много рассказывал.... Серии для чайников я бы не советовал, если честно. Там букв много, но не очень много смысла, а читать длинный текст скучно -- просто надоест.

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

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

Насчёт инета --- папины действия одобряю. Лет в 14 можно до почты допустить :)

А впрочем... насчёт серии для чайников... кажется, я зря ругал её. Вот поглядите-ка на этот экспонат: h**p://lib.mexmat.ru/books/14361 (если надо -- могу скинуть её на мыло или положить куда-нить).

Posted by: FiL on 26-01-2007, 22:42
я начинал с дрождейна. Настольная книга была с 6-го по 8-й класс.

http://molotok.ru/catalog/lot/12757096/ (http://molotok.ru/catalog/lot/12757096/

Posted by: dmvn on 26-01-2007, 23:23
Слушай, ФиЛ, а почему я делал то же самое? Только он Джордейн :) Интересно, есть ли она на аглицком? Наверно есть, но придётся поискать, ибо это конец 80-х--- начало 90-х. Отличная книжка, но сложновата для 10-летнего ребёнка, наверное. Ещё читал книжку Питера Нортона про ПК, тоже ничего, она как раз про архитектуру (не помню как называется).

Posted by: FiL on 27-01-2007, 00:01
аааа... Нортона я забыл. Точно, и Нортона я тоже читал (Джордейна я просто очепятался).

Нортон, П. - "Программно-аппаратная организация компьютера IBM PC"
Нортон, П. - "Персональный компьютер IBM и Операционная система MS-DOS"
Нортон, П. - "Язык ассемблеpа для IBM PC".

Первая у меня точно была ( http://www.codenet.ru/progr/asm/norton/ (http://www.codenet.ru/progr/asm/norton/ ), вторую я не стал покупать потому, что у меня была весьма похожая (Фролов?), а третья была у одноклассника и мы ее друг-другу передавали...

Posted by: VxWorks on 27-01-2007, 00:11
О, Джордейн! Настольная книга была :)

Мне кажется, что Beginning programming for dummies отлично подойдет :) В понедельник скажу ему.

Posted by: Set on 27-01-2007, 03:55
http://wiki.python.org/moin/BeginnersGuide/NonProgrammers (http://wiki.python.org/moin/BeginnersGuide/NonProgrammers

Posted by: dmvn on 27-01-2007, 04:39
ФиЛ, погоди-ка, ты не путаешь снова? Про ассемблер я помню классическую книжку Питера Абеля "Язык ассемблера для IBM PC и программирования", в оригинале "IBM PC Programming Language", P.Abel. У Петьки Нортона тоже такая, значит, была... Забавно :)

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

Идея про Питон --- интересна, но вот если у парня закрыт доступ к инету, то наверное ему от этой странички мало толку будет... Надо что-то оффлайновое :)

Posted by: FiL on 27-01-2007, 09:41
Ааааа... Абель. Огромная такая книжища. Она на полку не влазила. А куда-же я ее дел? у меня такая тоже была, но это уже, наверное, в универе. Последний раз когда я ее видел, то она просто на части разваливалась. Но это было лет 10 назад. А потом... не знаю что потом стало. А ведь доступная книженция была.
Нортоновская по ассемблеру тоже была. Но у меня ее не было. У меня таки был Абель.

Хочу домой. У меня там явно какие-то из этих книг еще есть :)

Posted by: VxWorks on 27-01-2007, 12:07
Set

Ты предлагаешь начать с Python? Может, лучше с Basic?


FiL

Абель? Нифига не огромная - стандартного формата, как и книги SAMS. Только что смотрел.

Posted by: dmvn on 27-01-2007, 17:11
Воркс, я полагаю, ФиЛ имеет в виду русское издание Абеля. А оно действительно нестандартного формата, на плохой бумаге, очень высокое, еле на полку влазит (у меня та же проблема была, я потом её в другой шкаф поставил).

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

Posted by: VxWorks on 27-01-2007, 17:56
У меня на полке стоит русское издание Абеля - в черном твердом переплете (Москва, Высшая Школа, 1992). Бумага действительно мерзкая -серая и пористая, но размер у нее вполне стандартный. Такая же, как Рубенкинг и Липман.

Posted by: Set on 27-01-2007, 20:37
Уж больно у Бейсика реликтовый вид, плохо себе представляю в чём он будет с ним возиться и как в перспективе использовать. :)

А C, C++ вряд ли в 10 лет потянуть.

Posted by: PinkPa on 27-01-2007, 21:50
Пусть учит C# или Java. :) C# - это упрощенный С++, почти Basic, плюс он вроде сейчас модный. Если понадобятся названия книг на английском, могу сделать.

Posted by: sdandrey on 28-01-2007, 01:49
QUOTE (Set @ 27-01-2007, 17:37):
Уж больно у Бейсика реликтовый вид, плохо себе представляю в чём он будет с ним возиться и как в перспективе использовать. :)

А C, C++ вряд ли в 10 лет потянуть.
Visual Basic и сейчас очень даже пользуют :wink:

Posted by: PinkPa on 28-01-2007, 09:40
QUOTE (sdandrey @ 28-01-2007, 01:49):
Visual Basic и сейчас очень даже пользуют :wink:
Да, про Visual забыл. :) Правда, от классического бейсика в нем мало что сохранилось, а для GUI-ёв его действительно активно юзают. :)

Posted by: VxWorks on 28-01-2007, 12:19
Как мне кажется, для гуев лучше Дельфей ничего нет :) Но это на мой невзыскательный вкус.

Posted by: Uzaren on 28-01-2007, 12:51
QUOTE (VxWorks @ 27-01-2007, 16:56):
У меня на полке стоит русское издание Абеля - в черном твердом переплете (Москва, Высшая Школа, 1992). Бумага действительно мерзкая -серая и пористая, но размер у нее вполне стандартный. Такая же, как Рубенкинг и Липман.
В чёрном, твёрдом переплёте, формат действительно был не стандартный, плохо в сумку помещалась, я по этому не любил её с собой таскать... и куда я её дел потом :drag:

Posted by: VxWorks on 28-01-2007, 12:54
Сделать что ли фотку? :wink:

Posted by: Uzaren on 28-01-2007, 13:20
В Израиле, последнии 10 лет практикуют начало обучения программирования с языка С, причём делают это как в школах, так и в высших учебных звидениях, желательно при этом пользоватса не всякими навороченными редакторами типа Visual Studio или Borlandom под windows , а старым досовсим синим Borland С

Posted by: Set on 28-01-2007, 19:38
Мелкомягкие в перспективе решили порешить VB, в качестве убивца должен выступить C#. :)

Клепать кнопки на формы и изучать интерфейс VS - это не программирование. :actu:

Posted by: sdandrey on 28-01-2007, 22:03
как по мне так самыми нормальными языками для начинающего программёра являются Basic и Pascal,т.к в них трудно напортачить плюс не сложные в плане осваивания

Posted by: PinkPa on 29-01-2007, 00:53
QUOTE:
В Израиле, последнии 10 лет практикуют начало обучения программирования с языка С, причём делают это как в школах, так и в высших учебных звидениях, желательно при этом пользоватса не всякими навороченными редакторами типа Visual Studio или Borlandom под windows , а старым досовсим синим Borland С

Это который 3.1, начала девяностых годов? Я в нем сидел года два, очень удобный, и не глючил. :) А есть еще более древние, Турбо С 2.0 и 1.5, тоже с синим экраном. Последний, кажется, помещался на 360К дискетку (вместе с библиотеками для нужной модели памяти), а 2.0 - не помещался, требовал 2 дискет. :)

Posted by: dmvn on 29-01-2007, 05:36
Воркс, давай фотку Абеля! Уж раз нас так всех так пробило... Она у меня не чёрная была, а тёмно-cyan-истого цвета.

Set, зря ты так! Я тебе скажу, что если парень в 10 лет научится даже рисовать окошки и добавлять на них простейшие event'ы, чтобы что-то полезное происходило, то это-то его как раз и заинтересует: "ага, и вот так можно, и это просто. ну-ка, а если вот так? ух ты, работает!". Да, я начинал с обычного бейсика, но в моё время просто не было виндов!

И я тебе скажу как человек, учивший детей программированию: они совершенно не понимают подхода "от сложного к простому". То есть нельзя 10-летнему дать прочесть Cтрауструпа и сказать "ты знаешь C++". Он просто не поймёт ничего, даже если выучит наизусть все тонкости механизма наследования классов.

Или ты хочешь, чтобы пацан в 10 лет учился проектированию? Бесполезно. Не тот уровень мозгов.

Совсем другое дело --- это постепенное усложнение. Да, сначала у него прога будет говорить при нажатии на OK "Пошёл на фиг". Потом она будет это делать только при неверном ответе на вопрос, заданный тут же в окне. Я сам так учился, мне страшно нравилось, что я могу управлять поведением компьютера. Ну а потом... потом уже пошло самостоятельное изучение книжек, я заботал полный синтаксис ну и пошёл креативить.

Эх... золотое было время --- пришёл из школы, пожрал, сделал уроки за полчаса-час :drag: и за тачку! :rolleyes:

А вот вступать в споры типа
"Жрецы Дельфийского оракула" :argue: Синтоисты/Католические Синтоисты
я не буду.

Posted by: Uzaren on 29-01-2007, 09:41
QUOTE (PinkPa @ 28-01-2007, 23:53):
Это который 3.1, начала девяностых годов? Я в нем сидел года два, очень удобный, и не глючил. :) А есть еще более древние, Турбо С 2.0 и 1.5, тоже с синим экраном. Последний, кажется, помещался на 360К дискетку (вместе с библиотеками для нужной модели памяти), а 2.0 - не помещался, требовал 2 дискет. :)
Он самый, был у меня на 18 или 19 больших дискетах :laugh: ТС 2.0 тоже по началу юзал, но в 3.1 была подсветка более удобная, да и к тому уже все библиотеки были. А ещё во время установки можно было выбрать установку под 3.11 винду, и он вроде тогда шоркаты делал в винде, точно уже даже и н епомню :D:

Posted by: Lord KiRon on 29-01-2007, 10:50
А самое главное там офигительно удобный Help был , с примерами и даже "коментариями" , я до сих пор помню что в подсказке о команде издающей звук был целый рассказ о курах умирающих от звука определённой частоты ...

Posted by: sdandrey on 29-01-2007, 10:57
QUOTE (Lord KiRon @ 29-01-2007, 07:50):
А самое главное там офигительно удобный Help был , с примерами и даже "коментариями" , я до сих пор помню что в подсказке о команде издающей звук был целый рассказ о курах умирающих от звука определённой частоты ...
и в твоей округе после этого начался куринный мор? :fear2: :w00t: :lol:

Posted by: Lord KiRon on 29-01-2007, 13:01
Мда... похоже меня тут уже знают :p:

Хрена, не сработало - наверно базер не довал достаточно точную частоту :diablo: :lol:

Posted by: PinkPa on 29-01-2007, 13:22
QUOTE (dmvn @ 29-01-2007, 05:36):
Воркс, давай фотку Абеля! Уж раз нас так всех так пробило... Она у меня не чёрная была, а тёмно-cyan-истого цвета.

Set, зря ты так! Я тебе скажу, что если парень в 10 лет научится даже рисовать окошки и добавлять на них простейшие event'ы, чтобы что-то полезное происходило, то это-то его как раз и заинтересует: "ага, и вот так можно, и это просто. ну-ка, а если вот так? ух ты, работает!". Да, я начинал с обычного бейсика, но в моё время просто не было виндов!

И я тебе скажу как человек, учивший детей программированию: они совершенно не понимают подхода "от сложного к простому". То есть нельзя 10-летнему дать прочесть Cтрауструпа и сказать "ты знаешь C++". Он просто не поймёт ничего, даже если выучит наизусть все тонкости механизма наследования классов.

Или ты хочешь, чтобы пацан в 10 лет учился проектированию? Бесполезно. Не тот уровень мозгов.

Совсем другое дело --- это постепенное усложнение. Да, сначала у него прога будет говорить при нажатии на OK "Пошёл на фиг". Потом она будет это делать только при неверном ответе на вопрос, заданный тут же в окне. Я сам так учился, мне страшно нравилось, что я могу управлять поведением компьютера. Ну а потом... потом уже пошло самостоятельное изучение книжек, я заботал полный синтаксис ну и пошёл креативить.

Эх... золотое было время --- пришёл из школы, пожрал, сделал уроки за полчаса-час :drag: и за тачку! :rolleyes:

А вот вступать в споры типа
"Жрецы Дельфийского оракула" :argue: Синтоисты/Католические Синтоисты
я не буду.
У меня было немного не так. Компьютер появился в доме, когда мне было, кажется, 13. Бейсик уже знал "заочно", и через какое-то время (кажется, строк через 200) он перестал интересовать как язык - тачка производила на свет около 5000 операторов в секунду и на любой переборной задаче уходила в себя. Компилятора другого языка под рукой не оказалось, пришлось осваивать машинные коды. Надо сказать, что от замены бейсика на маш.коды алгоритмы не пострадали и не претерпели существенного изменения, как и подход к делу. :laugh: Скорее, напротив, все были в выигрыше - были преодолены компромиссные, связанные с "удобством для большинства" условности идеологии языков высокого уровня.

А о Visual Studio хочется сказать пару ласковых слов особо, т.к., идя на поводу у злобных московских работодателей, не желающих платить деньги за знание ассемблера, три дня назад я решил освоить эту среду разработки, а заодно и их джава-сю имени Билли Бейсика, т.е. С#. Как и водится у большинства увлеченных клавотопов, убил я на процесс освоения примерно 2/3 времени последних трех суток, с перерывами на неспокойный сон и короткие прогулки. В первом приближении VS 2005 произвела впечатление, схожее, видимо, с тем, которое должна производить машинка Зингера на коренного жителя ЮАР. :laugh: Вкладки стучат и хлопают, мастера генерируют безумный по величине текстовый код, при этом попытка создать простейшую, на 8 строчек C++ программу под Win32 потерпела фиаско, вызвав ошибку несовместимости типов, а в MSDN не нашлось места описанию типа, переменную которого принимает в качестве параметра их нейтив-функция AfxMessageBox(). :laugh: Впрочем, кто сейчас пишет руками и вдается в такие детали! Что за мелочность, тратить силы на вывод никому не нужного изолированного сообщения, когда под рукой целая библиотека прекрасных компонентов! Не обошлось, правда, и без других неожиданностей: в процессе отладки VS 2005 позволила себе 2 раза вылететь с потерей всех введенных данных, прямо во время редактирования. Ее визуализатор не нашел удачного способа трактовать мой полный ошибок и непонимания фишки код. Но на тот момент эти ужасы были впереди, и я, решив забыть Visual C++ как страшный сон, перелез на С# "резко", начав с освоения его основной задачи - упросить программирование интерфейса этой бронебойной операционки. Перелезать с ассемблера и классического, безинтерфейсного С++ было бы особенно сложно, если бы не довелось в свое время изучать азы флэша. Знание идеологии флэша сильно помогло в понимании идеологии Windows в целом, как операционки для прикладного программирования. Сегодня ночью VS сдалась и вроде как всё, связанное с интерфейсом, удалось освоить, заставить работать все элементы окна, включая меню, статус-панель, бегунки и прогрессив бары, даже звук и видео, кроме банального вывода текста в маленькую консоль внизу окошка, но и ее, думаю, удастся заставить работать на днях - надо только выяснить, где переусердствовал и не является ли многострочный вывод на экран устаревшей технологией с точки зрения идеологов Windows. :) В принципе, пришел к выводу, что Windows по сути - упрощенный и доведенный до ума флэш, господа из Макромедии по сравнению с Гейтсом просто зря едят свой хлеб. :laugh: А в целом создалось впечатление, что Microsoft за последние 15 лет сделала шаг вперед, особенно в плане дизайна панелей, иконок, меню и других визуальных компонентов. В плане создания устойчивого кода они ушли вперед, пожалуй, только на словах, возглавив авангард аграрного программирования. :laugh: Под занавес: представитель Microsoft Press в книжке по .NET на полном серьезе аргументированно доказывал, что байт-код CLR (промежутночный код для дальнейшей интерпретации, создаваемый компилятором С# и других языков .NET) работает чуть ли ни быстрее аналогичного кода, созданного, например, средствами обычного компилятора С++ или ассемблера, о котором мелкомягкие уже давным-давно предлагают забыть. Как он может работать быстрее? А! Оказывается, мы не учитываем, что интерпретатор на каждой машине использует нюансы ее архитектуры, особенности процессорных команд! Вот где неиссякаемый кладезь производительности! :laugh: Правда, "что-то я сначала засомневался..." © А.Трушкин. :laugh: А вдруг, действительно, по старой дружбе Интел припас пару-тройку недокументированных команд для основного партнера, помогающего отгружать свежие процессоры бочками? Запустил пустой цикл. Результат потряс - за секунду машине удалось прогнать пустой 250.000.000-й цикл! Ассемблер на i486 DX2-66 нервно курит в сторонке. :laugh: Правда, на Open Watcom C 1.5 этот же код на этом же процессоре заработал примерно в 4 раз быстрее, а ассемблер я даже не запускал, боюсь окончательно разувериться в людях. :laugh: Сейчас сижу и думаю, что делать после отдыха - забыть .NET как страшный сон, или забыть как страшный сон не только .NET, но и все программирование под Windows в целом, или, может быть, пойти на компромисс и писать на C# интерфейс, а основную программу на ваткоме, присобачивая ее потом в виде DLL-модуля к интерфейсу?...

Posted by: dmvn on 30-01-2007, 13:00
Батенька, вы слово "оптимизация" слышали? Это я про скорость работы пустых циклов.... В приличных домах пустые циклы вообще из кода выбрасывают просто на этапе компиляции :) Я бы рекомендовал поглядеть, какой код таки был сгенерён в итоге, я как-то раз наступил на эти грабли, тщетно пытась найти ничего не делающие пустые циклы в асм-листинге...

Posted by: VxWorks on 30-01-2007, 13:20
QUOTE (dmvn @ 30-01-2007, 10:00):
Батенька, вы слово "оптимизация" слышали? Это я про скорость работы пустых циклов.... В приличных домах пустые циклы вообще из кода выбрасывают просто на этапе компиляции :) Я бы рекомендовал поглядеть, какой код таки был сгенерён в итоге, я как-то раз наступил на эти грабли, тщетно пытась найти ничего не делающие пустые циклы в асм-листинге...
Хех... про пустые циклы. Мне как-то позвонили из одной фирмы с требованиями увеличить объем памяти на чипе в три раза. Думаю, что даже ежу понятно, что это означает выпуск нового процессора нехилого размера (ибо память - довольно немелкий объем на матрице занимает).
Я поехал к ним, смотреть их софт. Выяснилось, что они не используют оптимизатор в принципе. На вопрос "почему?", они ответили, что включение оптимизации полностью убивает весь функционал. Стали разбираться... Так вот, у них все тайминги (хз как это по-русски будет) были основаны на циклах ожидания! Пустых, есс-но. Оптимизатор их выкидывал к чертям (и правильно делал, нефиг автомобильный софт писать таким макаром).
Я им предложил два варианта - либо они переписывают весь свой софт с использованием RTI (Real-Time Interrupt - прерывание от системы реального времени), либо я могу заставить оптимизатор не выкидывать пустые циклы с помощью волшебного слова volatile. Они решили, что второй вариант им больше подходит и я три дня с ними проходил по всей программе, пока она не заработала. Тайминги, конечно, ушли, но они их потом подгоняли эмпирическим путем...
После чего, я поставил у себя в башке жирный крест на всех машинах, в которые пойдет этот софт (не спрашивайте каких, я не могу сказать).

Posted by: Lord KiRon on 30-01-2007, 15:21
Кстати а действительно что делать еси на чипе "часового" интерапта совсем нет да и "внешних" всего 4 и все используются ?

Posted by: PinkPa on 30-01-2007, 15:23
QUOTE (dmvn @ 30-01-2007, 13:00):
Батенька, вы слово "оптимизация" слышали? Это я про скорость работы пустых циклов.... В приличных домах пустые циклы вообще из кода выбрасывают просто на этапе компиляции :) Я бы рекомендовал поглядеть, какой код таки был сгенерён в итоге, я как-то раз наступил на эти грабли, тщетно пытась найти ничего не делающие пустые циклы в асм-листинге...
На обоих системах при тестировании цикл остался и работал. Ватком по умолчанию не выкидывает циклы, С#, видимо, тоже (посмотреть ассемблерный код не могу, могу максимум взглянуть на CLR, т.к. С# - интерпретируемый язык). На современных компьютерах пустые циклы не применяют, т.к. есть возможность, как подметил WxVorlks, решить проблему, обратившись к системе (к слову, timing переводится на русский как задержка). На некоторых более старых компах без пустого цикла было не обойтись, т.к. в них не было таймера. В моем же случае пустой цикл тестировал, насколько быстро будет работать часто повторяющийся код, содержащий, по сути, всего три распространенных команды (инкремент, проверку и условный переход). Как и следовало ожидать, чуда не произошло и интерпретируемый код работает медленнее, хотя и шустро. Примерно с такой же скоростью выполнялся этот цикл в ассемблерной реализации на P2 и первых целеронах. Можно было бы усложнить тест, введя в цикл работу, например, с матрицами, но это дольше и делать лень. Кстати, вспомнил еще один перл от господина из Майкрософт Пресс: оказывается, CLR работает быстрее, т.к. в нем не используются регистры! Все данные, для которых исторически использовалась регистровая память, CLR запихивает в стэк. Кто-нибудь помнит хотя бы один х86 процессор, на котором обращение к регистрам занимало больше времени (тактов), чем обращения к стэку? В свое время Ватком как раз славился тем, что использовал регистры где только возможно, даже при вызове ф-ций и передаче в них параметров. Думаю, еще немного, и Майкрософт пресс выпустит книжку, в которой нам на полном серьезе расскажут, что ассемблера вообще никогда не существовало. :laugh:

Posted by: VxWorks on 30-01-2007, 15:55
Lord KiRon

QUOTE:
решить проблему, обратившись к системе (к слову, timing переводится на русский как задержка)
Это когда операционка есть, тогда легко :) А когда ее нет, то сам себе RTI организовываешь. Иногда приходится прилично извращаться, см выше.

Posted by: PinkPa on 30-01-2007, 19:07
QUOTE (VxWorks @ 30-01-2007, 15:55):
QUOTE:
решить проблему, обратившись к системе (к слову, timing переводится на русский как задержка)
Это когда операционка есть, тогда легко :) А когда ее нет, то сам себе RTI организовываешь. Иногда приходится прилично извращаться, см выше.
Я неправильно выразился, под системой подразумевался компьютер в целом, и можно без софта. :) Ведь сейчас практически в каждой системе есть что-то, похожее на таймер. И если нет операционки, повесить свой собственный обработчик не представляет большого труда. Хуже, когда на уровне железяки нет ни таймера, ни часов, и вообще нет ничего, кроме тактового генератора и данных о скорости исполнения тех или иных команд чипом. Решить проблему, в том числе и проблему реализации софтверных "виртуальных часов" возможна, но эта реализация, как мне кажется, будет громоздкой и не особо надежной. А просто отсчитать нужное время, зная скорость ТГ, ИМХО, можно чем угодно, хоть тем же пустым циклом.

Posted by: VxWorks on 30-01-2007, 19:24
Тут ты прав :) В таком случае основная заморочка возникает, когда чип может исполнять несколько команд одновременно, как, например, ADI SHARC 2106x или, что еще хуже, параллельное исполнение + SIMD, как в ADI Hammerhead. Я уже молчу о случае распараллеливания + pipeline, как в TI C67xx (вот где задница полная).
Для таких случаев, приходится писать программный таймер на ассемблере и не давать возможности оптимизатору применить распараллеливание инструкций.

Posted by: dmvn on 30-01-2007, 23:32
Воркс, я валялся примерно полчаса на диване от смеху --- насчёт пустых циклов. Ну блин... во народ... Я всегда к авто относился с недоверием, а теперь и подавно... Уж лучше пешком.

Но, надо отдать должное, что тот же Джордейн, рассказывая о том, как программировать на низком уровне контроллер НГМД, писал что-то вроде
CODE

mov cx, 100
loop $ ; и короткое ожидание пока мотор наберёт обороты

Posted by: VxWorks on 30-01-2007, 23:54
Тебе смешно, а у меня волосы дыбом встали. Я бы понял, если б это был какой-то не mission critical софт, но в машинах...
Кстати, в некоторых типах софта просто запрещено использовать оптимизацию. Где-то в DOD-MIL-178B такое прописано для авионики.

Posted by: FiL on 31-01-2007, 00:21
QUOTE (VxWorks @ 30-01-2007, 15:54):
Тебе смешно, а у меня волосы дыбом встали. Я бы понял, если б это был какой-то не mission critical софт, но в машинах...
Кстати, в некоторых типах софта просто запрещено использовать оптимизацию. Где-то в DOD-MIL-178B такое прописано для авионики.
запрещено использовать оптимизацию в компиляторе. Оптимизацию программы программистом использовать надо всегда. Но для этого нужен толковый программист. "а где-ж его взять" ©

Posted by: PinkPa on 31-01-2007, 10:05
QUOTE (VxWorks @ 30-01-2007, 19:24):
Тут ты прав :) В таком случае основная заморочка возникает, когда чип может исполнять несколько команд одновременно, как, например, ADI SHARC 2106x или, что еще хуже, параллельное исполнение + SIMD, как в ADI Hammerhead. Я уже молчу о случае распараллеливания + pipeline, как в TI C67xx (вот где задница полная).
Для таких случаев, приходится писать программный таймер на ассемблере и не давать возможности оптимизатору применить распараллеливание инструкций.
Логично. А что, распараллеливание не может быть запрещено какой-то одной командой (т.е. останавливаем все параллельные процессы, отсчитываем N тактов, снова продолжаем)? Второй момент: если чип работает в параллельном режиме, можно, по идее, явно выделить второе ядро на таймер. Или скорость исполнения будет плавать в зависимости от загрузки первого ядра? И еще один вопрос: оптимизатор, о котором ты говоришь - железный, в чипе, или это компонент транслятора, который занимается перекомпоновкой кода для увеличения производительности?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)