Некоторе время назад в своей Живой ленте (которую вы можете найти по a-mail:fkel.22@gmail.com) я упомянул о производственной системе Toyot'ы и одной замечательной книжке Майкла Кеннеди «Почему Toyota лучше?». Так вот, буквально недавно я дочитал её до конца и с уверенностью могу сказать, что каждый инженер, программист, руководитель да и вообще работник сферы разработки (неважно какой, даже дизаин с большой лёгкостью суда попадает) должен прочитать её. Язык, которым написана книга невероятно простой, читается очень легко. А главное в ней — это форма подачи и смыславая нагрузка. Там нет сухой теории, нет готовых рецептов, книга написана так, будто это роман, главные действующие лица которого — это люди: руководители отделов одной американской коорпорации, перед которой возникли большие проблемы, да и само её существование стало спорным вопросом. И им необходимо найти способ, которым можно вывести их предприятие на ведущие позиции на рынке. Если кому-то нравятся вещи, которые пишет Макл Ридпат, то вам это твоение точно понравится.
Ну а теперь собственно о Toyota. Ещё раз хочется выразить восхищение, того как там организованная производственная система. Можно с уверенностью сказать, что технологический прогресс в таких областях как улучшение качества продукции и технологическая совместимость довольно сильно ушёл вперёд. НО! Какой кровью это даётся, как это не только сохранить и приумножить? Это достаточно актуальные вопросы. И у Toyot'ы есть свой ответ на эти вопросы. Хотелось бы процитировать немножко и параллельно дать свои коментарии. Одним из важных моментов, который отмечается — это то что «успехи компании Toyota очень мало зависят от использования типичных для Америки сложных подходов, таких, например, как автоматизированное проектировани и т.п.». И что же это значит? А значит это то, что если у тебя здоровые ноги, тебе не нужны костыли. Именно фундаментальный уровень, который лежит в основе, позволяет этой компании достаточно успешно развиваться.
Очень важным является подход, который используется в ходе разработки. Именно разработки, потому что разработка и производство — это две совершенно разные вещи, которые в корне отличаются друг от друга! В Toyota во главу угла ставится подход, основанный на знаниях. ЗНАНИЯ! Вот тот ключ, который позволяет этому автомобильному гиганту открывать всё новые и новые двери. Если кратко, то принцип примерно такой. В Toyota нет жестких требований к организации производства, нет необходимости вести постоянную отчётность и т.п. Короче бюрократия сведена к минимуму. Центральным звеном всей структуры являются знания. Они общие для всех, будто то работник вовлеченный в разработку, инженер или менеджер, все имеют доступ и информации, тем знаниям, которые копятся и копятся в процессе создания новых изделий. Во-вторых это личная ответственность всех и каждого за те решения, которые он принимает в процессе разработки. Таким образом у инженеров появляется стимул развиваться и получать новые зания, которые они с пользой могут потом применить. Инженерам нет смысла пытаться запрыгнуть в административный аппарат, потому что у них предостаточно способов для реализации и собственного роста. Вот как-то так. Естественно я не притендую на полноту, всем, кому станет интересно очень советую прочитать книжку. Успехов!
Данный сайт посвящен Цифровым технологиям и всему, что с этим связано напрямую или косвенно, в первую очередь - это математика и программирование!
воскресенье, 6 июня 2010 г.
воскресенье, 16 мая 2010 г.
Wall Street
Уолл Стрит? Уолл Стрит.... Уолл Стрит! Тем, для кого это не пустое слово очень рекомендую посмотреть один маленький сериальчик называется "Войны Уолл Стрит" или по англу "Wall Street Warriors". Довольно интересно рассказывает про жизнь и работу людей, делающих деньги на подъёмах и падениях рынка. Только нужно фильтровать, то что там показывают, некоторые вещи откровенная лажа. А так стоит посмотреть, хотя бы пару серий))).
вторник, 22 сентября 2009 г.
Учимся "говорить" (Part 3 - Анализаторы)
Перед тем, как начать какие-либо телодвижения в соответствии с заданной программой (написанной на Small Basic), в начале необходимо проанализировать её исходный код.
Этап анализа состоит из трёх фаз: Лексический анализ (ЛА), Синтаксический анализ (СА) и Семантический анализ (СмА).
Теперь кратко пройдёмся по ним.
В ходе Лексического анализа из исходного набора знаков (исходный код) формируются символы языка (или лексемы - это переменные, ключевые слова языка for, if и т.п.). ЛА не работает с контекстом, т.е. последовательность символов значения не имеет.
ЛА решает следующие задачи:
1. Преобразование знаков в символы.
2. Обработка пробелов.
3. Удаление комментариев.
На сегодняшний день существуют уже готовые инструменты для построения ЛА. Одним из таких мы и воспользуемся в дальнейшем.
В ходе Синтаксического анализа определяется структура программы. СА работает с контекстом, используя символы полученные при ЛА. Результатом работы СА является описание программы в форме дерева (синтаксическое дерево).
СА считывает символы и проверяет получаемую последовательность на ошибки. В дальнейшем рассмотрим два метода СА: метод рекурсивного спуска и SLR(1).
СА так же как и ЛА может быть построен автоматически:
В ходе Семантического анализа решаются проблемы совместимости типов переменных, области видимости и т.д.
P.S. В следующий раз немного поговорим о грамматике и языке. И более подробно изучим Лексический анализатор: сделаем свои первые наброски этого чуда, а так же попробуем автоматизировать данный процесс.
Этап анализа состоит из трёх фаз: Лексический анализ (ЛА), Синтаксический анализ (СА) и Семантический анализ (СмА).
Теперь кратко пройдёмся по ним.
В ходе Лексического анализа из исходного набора знаков (исходный код) формируются символы языка (или лексемы - это переменные, ключевые слова языка for, if и т.п.). ЛА не работает с контекстом, т.е. последовательность символов значения не имеет.
ЛА решает следующие задачи:
1. Преобразование знаков в символы.
2. Обработка пробелов.
3. Удаление комментариев.
На сегодняшний день существуют уже готовые инструменты для построения ЛА. Одним из таких мы и воспользуемся в дальнейшем.
В ходе Синтаксического анализа определяется структура программы. СА работает с контекстом, используя символы полученные при ЛА. Результатом работы СА является описание программы в форме дерева (синтаксическое дерево).
СА считывает символы и проверяет получаемую последовательность на ошибки. В дальнейшем рассмотрим два метода СА: метод рекурсивного спуска и SLR(1).
СА так же как и ЛА может быть построен автоматически:
В ходе Семантического анализа решаются проблемы совместимости типов переменных, области видимости и т.д.
P.S. В следующий раз немного поговорим о грамматике и языке. И более подробно изучим Лексический анализатор: сделаем свои первые наброски этого чуда, а так же попробуем автоматизировать данный процесс.
воскресенье, 13 сентября 2009 г.
вторник, 8 сентября 2009 г.
Учимся "говорить" (Part 2 - Цель)
Попробую более чётко сформировать цель. Буду (в перспективе надеюсь скажу "БУДЕМ", но пока я один) писать интерпретатор языка Basic под микроконтроллер AVR ATmega16 (если места не хватит, перелезу на более ёмкий контроллер, просто этот под рукой оказался). Под Basic'ом понимается диалект Small Basic (см. книжку Герберта Шилдта "С для профессиональных программистов" 1989 г.). Маленькое отступление по поводу этой книжки. В ней представлен подход к разработке интерпретатора Small Basic со всеми исходниками. Текст программы в ней написан на K&R C (я естественно только за ANSI С). Но копировать чужой код как-то не хочется (мы же учимся, результат не особо важен, сам процесс - ВОТ ЧТО ГЛАВНОЕ) поэтому из неё будут взяты только правила Small Basic.
Вот особенности этого языка (перечислю пока то, что нужно знать для построения синтаксического анализатора (подробности потом)):
1. Все переменные обозначаются одной буквой. Т.е. мы имеем двадцать шесть переменных (A-Z).
2. Переменные разных регистров не отличаются друг от друга.
3. Все числа являются целыми.
4. Символьные переменные не поддерживаются.
Пока этого хватит, остальное буду добавлять по мере необходимости. (Когда все правила языка будут сформулированы, объединю их в одном посте).
В качестве языка программирования (как уже было сказано выше), на котором этот интерпретатор будет писаться, возьму ANSI C.
Компилятор: WinAVR (+ все дополнительные приблуды к нему).
Среда разработки: AVR Studio.
Отладка будет происходить в VMLab и Proteus (иногда, для тренировки, на реальном железе).
Отдельные моменты будут тестироваться на PC (работа всяких анализаторов). В таком случае компилятор: gcc под Linux.
Все исходные коды, файлы проектов и модели буду так же выкладывать в общий доступ.
P.S. "Счастья для всех, Даром, и пусть никто не уйдёт обиженным" (с) Стругацкие
Вот особенности этого языка (перечислю пока то, что нужно знать для построения синтаксического анализатора (подробности потом)):
1. Все переменные обозначаются одной буквой. Т.е. мы имеем двадцать шесть переменных (A-Z).
2. Переменные разных регистров не отличаются друг от друга.
3. Все числа являются целыми.
4. Символьные переменные не поддерживаются.
Пока этого хватит, остальное буду добавлять по мере необходимости. (Когда все правила языка будут сформулированы, объединю их в одном посте).
В качестве языка программирования (как уже было сказано выше), на котором этот интерпретатор будет писаться, возьму ANSI C.
Компилятор: WinAVR (+ все дополнительные приблуды к нему).
Среда разработки: AVR Studio.
Отладка будет происходить в VMLab и Proteus (иногда, для тренировки, на реальном железе).
Отдельные моменты будут тестироваться на PC (работа всяких анализаторов). В таком случае компилятор: gcc под Linux.
Все исходные коды, файлы проектов и модели буду так же выкладывать в общий доступ.
P.S. "Счастья для всех, Даром, и пусть никто не уйдёт обиженным" (с) Стругацкие
Интересные поделки (шасси)
Представляю вам творение одного моего товарища "Тахиона експлужена" (да-да именно так его звать). Чувак просто мастер творить всякие срывающие мозг шасси для разных робототехнических штук. Причём (как видно из фоток ниже) предпочитает детский железный конструктор. Это одна из его поделок: мини-фрезерный станок. Правда на нём нет одной детали: шпинделя (фрезерной головки) и привода с редуктором для неё. И отсутствует очень важная вещь!!! Это контроллер! Вот сижу и думаю, может потратить драгоценное время и сварганить для фрезера "мозги" и софта для них написать... (у создателя видать лень не дала этим заниматься, Тахионыч! это камень в твой огород). Кстати, на нём можно по-координатно привода подключать)))) прикольно))).
Если интересно, могу более подробно описать его особенности.
P.S. У чувака есть ещё прикольные поделки... сфоткаю - выложу)



Если интересно, могу более подробно описать его особенности.
P.S. У чувака есть ещё прикольные поделки... сфоткаю - выложу)



понедельник, 31 августа 2009 г.
Учимся "говорить" (Part 1 - Pilot)
В последнее время стал всё чаще думать о написании интерпретатора какого-либо языка. Спрашиваете: ЗАЧЕМ! это мне нужно? Я отвечу! Есть две причины. Первая, ну и, наверное, для этого блога самая важная – это любопытство. Всегда было интересно разобраться в том, как работают эти самые лексические, синтаксические и т.п. анализаторы. Да и вообще сам процесс построения такой программы как интерпретатор (ну или компилятор) завораживает и позволяет прикоснуться к чему-то новому и доселе неизвестному. Вторая причина достаточно практическая. Мне довольно много приходится заниматься микропроцессорными системами, и часто попадаются такие, в которых встроен, например интерпретатор BASIC’а, а то и вообще полноценный язык технологического программирования. Это в разы сокращает время разработки прикладной программы для проектируемой системы, по сравнению, что если бы софт требуемой функциональности писался на C или Assembler.
Значит, утверждаем проект! Написать интерпретатор языка программирования (с этим мы определимся чуть позднее) для микроконтроллера (я буду делать под AVR).
Ну вот! Начало положено! Осталось только дерзать!
Все свои наработки, идеи, решения, предложения и мысли буду писать здесь по мере формирования и накопления.
Доживёт ли идея до своей конечной реализации: НЕИЗВЕСТНО! В этом и состоит особенность этого блога! Всё что здесь начинается, не обязательно тут и закончится!
P.S. Материал буду стоить на основании информации из следующих книг:
Опалева Э. А., Самойленко В. П. Языки программирования и методы трансляции. – СПб.: БХВ-Петербург, - 2005.
Карпов Ю. Г. Теория и технология программирования. Основы построения трансляторов. – СПб: БХВ-Петербург, 2005.
Хантер Робин. Основные концепции компиляторов.: Пер. с англ. – М.: Издательский дом Вильямс, 2002.
Ну и, конечно же ''Книга Дракона'', которая в принципе в представлении не нуждается, но я всё равно напишу:
Ахо, Сети, Ульман. Компиляторы: принципы, технологии и инструменты.: Пер. с. англ. – М. : Издательский дом Вильямс, 2003.
Ну что же… пожелаем себе удачи! :))
Значит, утверждаем проект! Написать интерпретатор языка программирования (с этим мы определимся чуть позднее) для микроконтроллера (я буду делать под AVR).
Ну вот! Начало положено! Осталось только дерзать!
Все свои наработки, идеи, решения, предложения и мысли буду писать здесь по мере формирования и накопления.
Доживёт ли идея до своей конечной реализации: НЕИЗВЕСТНО! В этом и состоит особенность этого блога! Всё что здесь начинается, не обязательно тут и закончится!
P.S. Материал буду стоить на основании информации из следующих книг:
Опалева Э. А., Самойленко В. П. Языки программирования и методы трансляции. – СПб.: БХВ-Петербург, - 2005.
Карпов Ю. Г. Теория и технология программирования. Основы построения трансляторов. – СПб: БХВ-Петербург, 2005.
Хантер Робин. Основные концепции компиляторов.: Пер. с англ. – М.: Издательский дом Вильямс, 2002.
Ну и, конечно же ''Книга Дракона'', которая в принципе в представлении не нуждается, но я всё равно напишу:
Ахо, Сети, Ульман. Компиляторы: принципы, технологии и инструменты.: Пер. с. англ. – М. : Издательский дом Вильямс, 2003.
Ну что же… пожелаем себе удачи! :))
Подписаться на:
Сообщения (Atom)