The Svin Хоть у грубо (и по смыслу, и как аналогия), но это все равно, что утверждать что "жизнь это затяжной прыжок из (you know) в могилу". Реальность (как и правда) разная бывает и у каждого своя. Алекс, вы стереотипно мыслите Есть и такие "программисты"-штамповщики, но наверное есть и такая работа, не подразумевающая полета мысли программера. Мы все от чего-то зависим, не думаю, что это плохо и в данном случае. Ну да - real man code in binary. Если говорить об академическом программировании, то может так и есть - азы, машинный язык, etc., а есть еще прикладное, для которого такие знания в лучшем случае как зайцу стоп-сигнал, а в худшем будут серьезной помехой. Все имхо, ес-но...
Spectrum Basic - гораздо более низкоуровневый язык, чем абстрактный Си (не путать с С++ имеющим inline asm . Доступ к портам/памяти - пожалуйста, самомодифицирующийся код можно даже делать! print 0/0 выводит на экран, например, 5 А начинать с виндосового GUI IMHO всё равно что идти назад. понять логику его работы невозможно - её давно поменяли на обратную совместимость, а изначальные кривые идеи давно забыты. как пишет Рихтер:
На какой экран, простите? Или перед написанием программы ты объяснишь подростку что такое консоль, поток ввода, поток вывода? От того что именно тебе не понятна логики GUI - это не значит что её нет и она непонятна всем ИМХО, лучше MS-оконного интерфейса еще никто за последнее десятилетие не придумал. И если есть интерфейс лучше, то я его не видел еще P.S. А Рихтер говорит немного о другом :Р
The Svin Вот видишь - ты так и не понял, почему я пирамиду перевернул... остальным 1.я не говорю, что си и гуи - лучше вообще, просто винда - стандартная ОС на домашней машине. основной принцип обучения - поэтапность. смена ОС или даже перход в консоль "для программирования" вызывает ложное ощущение, что программировать под винду невообразимо сложнее, а также создает "необычную ситуацию" для обучаемого, в которой ему сначало нужно освоиться. создав приложение, описанное выше, далее можно изучать си, а не гуи, используя гуи только для интерфейса - нужно же как-то вводить данные и получать результаты... 2.почему си - с прицелом на асм... посмотреть, как то же выглядит на асме для сишной проги в отладчике обычно проще, чем для такой же на дельфи (может, я и не прав, но это мое мнение: лично я не написал ни одной проги на вс - через дельфи перешел на асм, потому что люблю его синтаксис) 3.об азах - азы - это принципы, принципы в программировании - это алгоритмы, языки - средства реализации алгоритмов, опкоды - детали машинной реализации. сменяются процессоры - сменяются опкоды, яву меняются медленней, алгоритмы - тем более. знание опкодов полезно при критическом программировании, а при отсутствии общих представлений о программировании такие знания разве что интересны. я дизассемблировал проги 8080, читая дамп с экрана, но когда я сделал себе "защищенный режим 8080" и стал всегда иметь под рукой отладчик, то опкоды быстро позабывал. и сейчас знаю только два опкода х86 - 90 и цд, но писать проги это мне не мешает. иначе, отсутствие знаний разницы между прокариотами и эукариотами не мешает крестьянам выращивать картошку 4.о скриптах - единственная причина не изучать программирование на них - омерзительный механизм сообщения об ошибках (прадва, только на опыте мс ие+вб) - нихрена не поймешь, где же ошибка!
shoo " просто винда - стандартная ОС на домашней машине" - cогласен на 100%. Почти то же можно сказать о си - это язык межнационального общения, если хотите. Как бы кто из нас не любил asm, либо мышиный код, либо ненавидел MS... И по этим тоже, кстати, причинам вспоминать BASIC на Z80 бессмыслено. Многие из нас родом оттуда. Давайте еще повспоминаем как писали BIOS для своей первой "настоящей" ОС: CP-M, обучая ее самопальному железу. То что было - прошло. И долго ностальгировать, пуская сопли, опасно. Мир меняется очень быстро, и часто не в ту сторону, куда бы нам хотелось... Сколько лет уже сколько умников ругают Windows и Windows GUI, в частности! Ну и что? Пусть даже кто-то из нас сидит на работе под *nix, дома ребенок чем занимается? А жена на работе что использует? А ваш "любимый" начальник какую ОС насилует? А ваши клиенты\заказчики? Пробовали им впарить образец программы в опкодах? Попробуйте...
У Эппла отличные дизайнеры, но плохие программисты. Речь идет не внешней привлекательности, а о том как эту самую привлекательность программировать Ты еще о qnx и Gnom забыл, например :Р MS-UI выигрывает в соотношении качество навигации/программирование интерфейса. Возможности предоставляемые WIN32 API гороздо более мощные чем MacOS API
"вспоминать BASIC на Z80 бессмыслено. Многие из нас родом оттуда" Сопли - в сад. А вспоминать imho не совсем бессмысленно. Это пример благоприятной для обучения программированию среды. Более-менее наглядной и низкоуровневой. Команда -> простая операция. Нет сложных последовательностей операций, скрытых от пользователя. Имеет смысл перенести прелести и опыт оттуда в тотже Win. Скажем console applications. Там вполне реально писать линейные программки без заморочек с очередями сообщений. Сказал напечатать - напечаталось, сказал - input подождать - ждет. А красиво и разноцветно писать/рисовать в консольке - не есть проблема. "Пусть даже кто-то из нас сидит на работе под *nix, дома ребенок чем занимается" Вот об этом нужно думать в еще момент выдачи допуска С Far'а какого-нибудь. Или удава для console написать и дать поиграться Или tetris Вообже, куча игрушек может быть красиво сделана в консоли. (Да, я фанат А для чего - для привития вкуса "...не путfть C и C++ ..." Никто и не путал. Я имел ввиду именно C. Работа с указателями, строками и, может быть, структурами без заглядывания в disasm (или хотя бы понимания как это устроено) тоже есть нерулез. Как я заметил, люди, которые не знают, как передаются через стек параметры и как устроены локальные переменные ооочень долго мучаются. Может быть вообще имеет смысл C учить совместно с Asm (при умении вообще алгоритмизировать задачи, но это наверное все же на basic учить нужно. Или мк-52
навеяли: "Здраствуйте! Вы пришли изучать английский язык! Но сначала мы выучим немецкий, так как я с него начинал - и ниче так..." вот вам и абдукция! причем здесь английский? это же латынь...
2DirectOr Согласен, и это главный критерий при выборе среды программирования для начинающего. Поэтому поначалу лучше научить парня пользовать интепретатором, а затем уже транслятором. Так что Basic однозначно. В любой его ипостасии. Требуется наглядность и оконность у программы? Нет проблем - макросы MS-офиса(для Ворда и/или Экселя)! И наглядно и практично и удобная отладка. Alter Солидарен, МК-61 форева
Латынь - это мёртвый язык, который понимают только специалисты. Машинный язык - единственный язык который понимают машины. Что бы понять любой другой им нужен переводчик с "немецко-английских" Для машинного языка переводчик не нужен. Речь шла не о Windows как таковой а о высокоуровневом восприятии её. Хотя если речь о том есть ли что-то подобное, то да есть и было за много лет до Win32 - в MAC'ах. Запускает им же самим написанные программы в маш. кодах непосредственно в Hiew, программы решают его домашние задания и форматируют к виду в котором нужно здавать учителю. Пишет первую заказанную ему коммерческую программу (заказчику до болды как она будет написано, лишь бы была маленькая быстрая и делала что надо) Пишет коды для PICа который будут вставлен в самодельный электронный метроном. Она ещё и в колготках ходит, нам теперь всем дружно их натянуть? Начальников и клиентов как и депутатов мы выбираем себе сами. Задач же связанных с низким уровнем больше чем программистов, которые могут их решить. И что ты пытался впарить? Или это умозрительные догадки?
The Svin Ну, во-первых, никто не спорил про нужность "...задач, связанных с низким уровнем..." Рад за твоего ребенка, значит он никогда не убегает с уроков "cрубиться с пацанами в Half в компьютерный". Только вопрос, хорошо ли это? Второе: "...есть и было за много лет до Win32 - в MAC'ах" - кстати, а MAC-и -то где?.. Ну и последнее. Так и вижу программу, написанную в кодах непосредственно в Hiew, дамп сброшенный на FDD ??? или может распечатанный на бумаге ??? (помните как вводили проги, напечатанные в журнале Радио для Микро-80\РК-86) - и потребитель довольный уходит, размахивая листочком формата А4, свернутым пополам! Или может инсталляторы для своих прог тоже пишите в Hiew? Извините, Вам же инсталляторы не нужны! А вот заказчикам, почему-то нравятся и splash-ЗАСТАВКИ и другие фичи. Можно долго плеваться или доказывать, но людям нравится... Вот с чем не буду спорить - так это PIC-и... Кстати, знаю об этом не по-наслышке. И сам не люблю писать для контроллеров на си. РIC18.., 80c51-cерия (AT89C, AT89S...) Только asm. Но это уже другая история, это работа, жесткий реал, ничего общего не имеющий с первоначальным вопросом.
Tupo > У Спека консоль отсутствует =) так что я объясню так: при выводе символа "5" копируются 8 байтов из знакогенератора в экранную область памяти. А потом покажу, как это сделать без PRINT, посредством 8ми POKE . Перейти от POKE к ассемблерным командам - дело пяти минут. > виндосовый GUI - это не первый ГУИ, с которым я работаю (первые я делал сам) поэтому мне понятно довольно много. И то, что микрософт тянет все промахи дизайна со времён виндос 1.0. Рихтер как раз про это и говорит, только в очень мягкой форме . > Ну дык понятно: половина начинает учиться на нём, а другая половина ничего кроме консоли не признаёт %) Тот же BeOS разработан "без обратной совместимости с чем-либо" - отсюда все плюсы дизайна (и минусы для маркетинга)
DirectOr Что-то вас увело от темы. Вот именно. Это большая разница, на чём постигать азы программирования и на чём работать. Начать можно и с Бейсика.. А можно и с Си/Паскаля или даже Ассемблера. Но судя по своему опыту (и высказываниям на форуме), начинать с Бейсика - не лучший выбор.
Ладно замяли. Я не против высокого уровня. Я считаю что к нему нужно приходить с низкого. Высокий уровень - есть очень мелкое подмножество того что делается на низком, но человек знакомый с низким это подмножество может расширять. А вот в обратную сторону не получается, человек обученный на высоком смотрит на низкий с позиции - а как то, что я делаю на высоком сделать на низком? Потому и настолько бедные в большинстве проекты по задачам и реализации, потому и перманентные вопросы "а где найти ассемблерщикам работу", потому и книги по ассемблеру больше похожи на корявые дизасмы программ написанных на высоком уровне. Работу человеку с высокоуровневым подходом в образовании как низкоуровневику искать бесполезно - то что он может написать на асме действительно проще написать на высоком уровне и качество которое даст компилятор будет лучше или равно. Опять я придумал новый мат термин. Лучше или равно, хуже или равно, такое же г$но ))
S_T_A_S_ Ну и тяжело же тебя порой понять Я говорю о том, что ненужно начинающему забивать голову консолью. Лучше для вывода использовать MessageBox(вот тебе и гуи), а в остальном с тобою я согласен. The Svin Не согласен. Ты забыл про алгоритмический язык. На примере ассемблерных программ его будет сложно продемострировать, вот в чем загвоздка. Алгоритмический язык учит человека мыслить так, как мыслит компьютер, поэтому этот этап никак нельзя пропустить.
Под словами "Алгоритмический язык" можно понять слишком разное. Ни одно из известных мне понятий не похоже на то как работает компьютер. Компьютер не умеет мыслить Само же построение и анализ алгоритмов, вещь просто необходимая, в том понимании что алгоритм - это интсрументарии в математике и существовал задолго даже до машины Паскаля. Любая задача должна строится от мат. модели, при её анализе находится подходящие мат. алгоритмы, при дальнейшем рассмотрении поиск нельзя ли оптимизировать мат. алгоритм дополнительными средствами существующими в машинной модели. Обычные блок - схемы (если они подразумевались под Алгоритмическим языком) не полностью изоморфны возможностям заложенным в потенциал большинства машин. Им вообще ничего не может быть полностью изоморфно, вспомним Гёделя. Вот в блок схеме у тебя ромбик x < y ? и отводы - ветви. Но что и как с точки зрения машины x < y? Это одна или несколько операций? Нет однозначного ответа, есть простейшее функциональное логическое отношение но функций реализующих его в машине может быть несколько. например cmp eax,ecx je @1 ;если равно jc @2 ;если меньше jp @3 ;используется при множественном подходе Тут уже ромбиков должно быть много но как понять по ним сколько было cmp? Кроме того числами отражается три основных величины - адрес, колличество бит, их состояние. Появляются очень интересные возможности автоматов реализуемых на преобразовании адресных составляющих и ветвление полностью заменяется простой арифметикой дополнительного кода в преобразовании адресов. Блок схема при это не только искажает уже логику компьютерной программы - она просто непохожа на неё нисколько, она как бы описывает человеку как работает автомат, автомат же вообще просто вычисляет адреса а не проверяет никаких значений и делает ветвлений, у него на логических узлах появляются не проверки условий а вычисления нужных адресов. Далее если уж пользываться термином "мыслит" то компьютер это одна из разновидностей электронных устройств. А как мыслит электронное устройство видно не в алгоритме а в принципиальной схеме, где нет никаких блоков. Так что про Алгоритмический язык могу сказать однозначно - он нужен. Но нужен чтобы понять как вообще задача решается. Сам он на работу компьютера не похож, но служит лучшим трамплином для нахождения машинной реализации.
Опкоды... опкоды... опкоды... Светодиоды так заманчиво горят... Мир! Дружба! Каждый при своем! Предлагаю выпить! (я уже - куму майора дали
Я вот еще подумал Нам нужно понять, что есть разные области: электроника, микроконтроллеры, персональные компьютеры, системное программирование, прикладное программирование... хороший системщик может не знать некую прикладную область, хороший прикладник - детали работы системы. эти области соприкасаются, но они разные, и освоить их все одновременно глубоко и хорошо невозможно не только начинающему, но и уже начавшему нужно выбрать из этого то, что нравится больше ребенку - и с этого начинать. если быть точнее, то я начинал с приемника на одной лампе, который, когда я его сделал, только шуршал после этого я понял: радио - не для меня да, кстати! разве есть на свете что-либо прекраснее душистого рассола? я еще вот о чем: опкоды ближе интравертам, экстравертам сродни больше вэб-дизайн и флэш, хотя это очень неабсолютно. детям характерно преобладание экстравертности. усиление интравертной стороны в них возможно, но, имхо, небезопасно - нужна гармония.