Сообщения за сегодня
Активность на форуме
1 день назад
1 день назад
RR добавляет сообщение в теме Повезло
1 день назад
1 день назад
RR добавляет сообщение в теме Готовим шашлык!
1 день назад
Онлайн 4
Нет пользователей
Были за 24 часа
Статистика
Тем 5 073
Сообщений 170 440
Пользователей 2 459

Языки программирования или "моя твоя совсем не понимать" ...

Просмотров 4032 Сообщений 26
23 февраля 2011, среда
RR RR
Последнее сообщение в порядке
23 февраля 2011, среда
Д Михельсон Д Михельсон
RR ОК!

BobNet

[SIZE=3]Уважаемый BobNet![/SIZE]
[SIZE=3]Я давно уже на бантики и под.......бки в силу возраста внимания не обращаю. J) Ну не врублюсь я, где эта ваша кнопка ОN или OFF.[/SIZE]
[SIZE=3]Шо-то до меня туго доходит. И потом, это ж Вы задействовали бантик, после которого в моем тексте миллион тегов выскочил. А Вы тут же грите, что это я их сюда впиндюрил…. [/SIZE]
23 февраля 2011, среда
RR RR
Ну не врублюсь я, где эта ваша кнопка ОN или OFF.
Её нет, мы её вручную пишем joke
после которого в моем тексте миллион тегов выскочил. А Вы тут же грите, что это я их сюда впиндюрил….
Грите не вы? Ну а кто же тогда, если не вы joke До настоящего момента, за три года существования форума мы "такую красоту" в первый раз увидели smile
23 февраля 2011, среда
Фрида Крюгер Фрида Крюгер За Питерские репортажи За фоторепортаж За проявленный героизм! За Белгород! За стихотворчество!
Доктор Михельсон;102994:
RR !

PS Я, кажется, допер. После вставки из ворда, я менял размер шрифта средствами окна... То то там все с <size начинается....

[SIZE=3]Уважаемый RR ! Шо-то до меня туго доходит.
[/SIZE]
А систему личных сообщений у нас на форуме отменили?[SIZE=3]
[/SIZE]
Доктор Михельсон;102997:
[SIZE=3]Уважаемый RR ![/SIZE]
Щас я скопирую этот текст в окно ввода (тут тоже есть абзацы), поменяю шрифт, в общем, сделаю все как делал, а Вы сделаете, то что Вы делали.
[SIZE=3]Уважаемый RR !
Шо-то до меня туго доходит.
[/SIZE]
А тему "Вопрос-ответ" у нас на форуме отменили?[SIZE=3]
[/SIZE]
Доктор Михельсон;103002:
[SIZE=3]А Вы тут же грите, что это я их сюда впиндюрил…. [/SIZE]
И вообще, [SIZE=3]уважаемый RR ! [/SIZE][SIZE=3]Шо-то до меня туго доходит.
[/SIZE]
У нас отменили правила для пользователей?Например, такие:[SIZE=3]
[/SIZE]
II. Условия создания новых тем и ответов на существующие темы
1. Любой зарегистрированный посетитель имеет право создать тему, которая соответствует профилю форума

3. Язык общения на Конференции - русский.
* На форуме в тематических разделах крайне не рекомендовано намеренное искажение русского языка.
14. Создавать новые темы с аналогичным содержанием созданных вами ранее тем.


[SIZE=1]P.S. Извините, что три своих вопроса не разнесла в три разных сообщения (и даже разные темы), а объединила в одно.
Тьфу-тьфу, не в праздник будь сказано...[/SIZE]
23 февраля 2011, среда
BobNet BobNet
[CENTER]
""
[/CENTER]
23 февраля 2011, среда
Master Master
Красивая и важная кися, будто ВЖИК...:teeth:
25 февраля 2011, пятница
Д Михельсон Д Михельсон
Я все-таки решил привести ранее размещенные тексты в нормальный вид
Может кто и почитает.

Буду признателен админам, если Вы тексты с неправильным форматированием удалите

Языки программирования

О языках программирования написаны огромные фолианты, сотни тысяч статей, миллионы строк инструкций, в общем, море информации. Зачем еще одно сочинение?
[off]Сочинение вот зачем. Автор попытается осветить одну специфическую тему – управление операционной системой Windows на уровне программного кода.
Поэтому мы посмотрим на языки программирования не с той точки зрения, что на них можно сделать вообще, а что можно сделать, чтобы управлять системой. Собственно, когда пользователь или сисадмин работают с компьютером, то они им управляют. Сисадмин на одном уровне. Пользователь на другом, как правило, более высоком. Автор попытается показать, что есть еще один уровень управления, лежащий ниже двух упомянутых. То есть мы как бы спустимся в шахту. Но главное не в этом. Главное в том, что я покажу, что этот уровень управления компьютером зачастую не такой уж и сложный, его вполне можно освоить и с успехом использовать в повседневной работе.
Как и положено, начнем от печки, то есть с истории.
Различного рода счетные устройства человек использовал еще с глубокой древности. Мы это пропускаем. Вычислительная техника механического типа, так сказать, в промышленных масштабах известна со второй половины 19 века. Это мы тоже пропускаем. В 30-40-х годах 20 века объем вычислений, необходимых человеку, сильно возрастает (расчеты в ядерной физике, баллистика, шифрование и проч.). Это был вызов. В ответ на этот вызов появились первые немеханические вычислительные машины на электронных лампах. Первой была ламповая ЭВМ ENIAC, США 1946 год. Если кому интересно, спросите о ней у Википедии. Но мы на ней останавливаться не будем.
Аналогичный компьютер с названием Colossus был создан примерно в то же время в Англии.
Устройствами ввода и вывода информации в первых ЭВМ были перфокарты. В последующие несколько лет совершенствование ЭВМ шло следующим путями – Вместо ламп стали использоваться сначала транзисторы, а потом и микросхемы - непроводящие подложки, на которые напылялся проводящий состав, эквивалентный электрической схеме с транзисторами. В качестве устройств ввода и вывода информации появились сперва магнитные ленты и барабаны, а потом и диски – для записи данных на длительное хранение и экраны телевизоров для демонстрации результатов вычислений оператору в реальном времени. Кроме того, был изобретен принцип хранения программы вычислений в памяти машины. То есть появились первые программы. Сразу же после изобретения этого принципа программы разделились на две категории. Первая категория – это собственно те программы, которые решали практические задачи – в области математики, физики и т.д. Их стали называть прикладными. Второй тип программ это вспомогательные программы, которые позволяли считать с устройств ввода информацию, сохранить ее на устройстве вывода, на экране и т.п. Множество программ второго типа постепенно оформились в Операционную систему. Первые программы (как прикладные так и системные) писались в так называемом машинном коде. Машинный код, это программа, в виде нулей и единиц, понятная процессору, но очень трудно воспринимаемая человеком. Потом код разделили. Человек стал использовать код с другим основанием, например восьмеричный, а машине оставили ее двоичный код. Числовой код с основанием больше единицы, легче воспринимается человеком.
Заметив, что код из себя всегда представлял смесь команд и данных для процессора, придумали буквенную кодификацию для команд, которая человеком воспринималось куда легче, чем числовая.
Набор правил при помощи которых код с буквами переводился в двоичный код стали называть языком ассемблера. А программы перевода из текста в двоичный код стали называть трансляторами с языка ассемблера.
Пишут ли сейчас программы на этом языке? И если пишут, то всегда ли будут писать? Какова, так сказать ценность и перспективы этого языка?
Ответ такой. Важнейшей особенностью языка ассемблера является то, что 1 команда на языке ассемблера всегда отвечает одной команде в процессоре. Поскольку иногда возникает необходимость детализовать управление процессором последовательно команда за командой, а заточить компилятор с языка более высокого уровня под такое управление удается не всегда, то необходимость в языке ассемблера никогда не отпадет. Но поскольку он все же используется очень редко, то знать только ассемблер недостаточно, что бы, например, найти работу программиста. Обычно сейчас на ассемблере иногда пишут специалисты высокой квалификации, которые знают еще кучу языков, а ассемблер используют по необходимости. (Последние утверждения справедливы для России). Может быть, где-то в фирме Intel или AMD и есть узкие специалисты, пишущие исключительно на ассемблере, но автору это не известно.
Язык ассемблера мы пропустим, потому, что если мы на нем остановимся, то дальше никуда не попадем.
В последующем было подмечено, что зачастую для решения сходных задач приходится генерить один и тот же код. Например, в начале выполнения программы все время приходится писать один и тот же набор команд на языке ассемблера. А это подтолкнуло к мысли, что например, вместо этого не писать все время одни и те же команды, а написать в исходном тексте уже на другом каком-то языке слово begin и написать такую программу, которая из этого “begin” сделает десяток (или больше) команд машинного кода. Такие языки стали называть языками высокого уровня, а программы, переводящие их в машинный код стали называть не трансляторами, а компиляторами.
Теперь посмотрим, кто и где всем этим занимался.
В 50-60 годах XX века разработкой и производством компьютеров занимались множество фирм, но к началу 60-х годов лидерство захватила фирма IBM.
Фирмой IBM была выпущена большая серия различных вычислительных машин и в 40-50-е годы, но настоящим триумфом была разработка фирмой ЭВМ System/360 с операционной системой OS/360, выпущенные в 1963 году. System 360 представляла собой машину, размерами с большой шкаф, имела оперативную память порядка нескольких мегабайт, оснащалась большим количеством дисков, которые, как правило, располагались в стойках, в помещениях величиной с небольшой спортивный зал и могла производить вычисления со скоростью нескольких миллионов операций в секунду. Поскольку дисковых стоек использовалось большое количество, то для отличия их от стойки, где располагался процессор и оперативная память, последнюю часто называли MainFrame – по английски – главная стойка. Это название закрепилось и за всей вычислительной машиной и вот уже около 50 лет весь мир знает, что мэйнфреймы – это большие вычислительные машины от IBM. Именно мэйнфреймы использовались американцами в проекте Аполлон при высадке на Луну. Из всей стоимости проекта в 25 миллиардов долларов 5 миллиардов достались фирме IBM. Мэйнфреймы заполонили банки, крупные фирмы, страховые компании, исследовательские лаборатории.
Замечу, что тогда еще не было ни UNIX, ни Windows, ни Linux.
В рамках своего проекта System/360 фирма IBM заложила те основы компьютерной культуры, из которых потом и произросло все остальное, что мы имеем сейчас. Поскольку автор волен использовать любые сравнения и гиперболы, я бы сказал так – создание OS/360 можно сравнить с трудами Коперника, Кеплера, Галилея и Ньютона в астрономии и механике.
Итак, OS/360 это был набор из примерно 1000 больших и малых программ. Одни во время работы должны были непрерывно находиться в памяти (резидентные). Другие подгружались по мере необходимости. Было введено понятие работа процессора в режиме ядра (называлось в режиме расширенного управления или режиме супервизора) и работа в основном режиме. Все машинные команды были разбиты на 2 группы – В режиме расширенного управления (режиме супервизора) могли выполняться все команды. В режиме основного управления мог выполняться только ограниченный круг команд. Поскольку все это деление на основной и расширенный набор команд реализовать в языках типа COBOL было большой заморочкой, то управление операционной системой можно было осуществлять только из программ, написанных на языке ассемблера. (Ну, и, конечно, с консоли оператора, выдавая команды по одиночке, или группируя их в пакеты на языке управления заданиями JCL т.е. Job Control Language). При этом, даже если программа и была написана на ассемблере, то это еще не означало, что с ее помощью можно было управлять операционной системой. Для предоставления такой возможности она должна была запускаться с консоли оператора с особым статусом (в режиме супервизора). Никакого “графического” Не было и в помине.

Итак, подведем некий итог

Мэйнфреймы (1963 год) были первыми настоящими вычислительными машинами.
Unixa не было.
Linuxa не было.
Писюх не было.
Фирмы Intel не было.
Фирмы Microsoft не было!!!!!.
DOS’a не было
Windows’a не было
Языка СИ не было.
Графического интерфейса не было.
Internet’a не было
Конференций не было
Форумов не было
Программа хранилась либо на перфокартах, либо уже на дисках (лентах)
Телевизоров (консолей) у каждого мэйнфрейма было всего 1-2, ну или 3-4 исключительно для сисадминов и операторов.
Запустить программу мог либо оператор с консоли, либо оператор перфорационного устройства.
Простой пользователь доступ к этим устройствам не имел.
Управлять операционной системой можно было или командами с консоли или из программ на языке ассемблера.
Компьютерных вирусов не было.
Безопасники может быть уже и были, но жили как в раю.
Программисты писали программы на бумаге и отдавали “На перфорацию” перфораторщикам.
Перфораторщики при набивке программ могли ошибаться.
Ошибка при компиляции или трансляции программы могла стать известна программисту только через несколько дней!
Т.е. с одной стороны “Компьютер мечты” уже был, но работа с ним строилась на уровне каменного века.
Что-то надо было менять…

Продолжение следует….Или не следует, если забанят…

Надо отметить, что в период с 1963 по, скажем, 1990 год существовали не только мэйнфреймы и UNIX системы. Были системы закрытого типа вроде машин PDP или VAX фирмы DEC c операционными системами RSX-11 или VAX VMS, ставшие, кстати, прообразами советских клонов вроде СМ-4 или СМ-1700. Но если мы это будем рассматривать, то не достигнем поставленных перед собой целей. Пропускаем. Кстати, клоном мэйнфреймов IBM были советские ЕС ЭВМ, выпуск которых прекратился в начале 90-х годов.
Итак, 1987 год, начало разработки линейки Windows NT – Windows 2000 – Windows Server 2003, Windows Server 2008 R2 и всем хорошо известных клиентских систем от Windows NT Workstation до Windows 7.
Вот несколько отличий Windows NT от pre-NT систем – Windows 3.1, 3.11, 95 и т.д.
Windows NT полностью 32 разрядная, а начиная с Windows Server 2008 64-ти разрядная операционная система, в то время как pre-NT системы имели смешанный 32 и 16 разрядный код.
Windows NT поддерживает многопроцессорные системы, а pre-NT не поддерживали.
Файловая система Windows NT поддерживает средства защиты посредством разделения прав доступа, а pre-NT нет.
Windows NT полностью реентерабельная система, что позволяет организовывать истинную многозадачность, а pre-NT системы содержали как реентерабельные участки кода так и нет. Поэтому при выполнении нереентерабельных участков кода работал только один процесс, все остальные блокировались и ожидали. В этом смысле критики Windows со стороны Unix-Linux сообщества были правы, но, ребята, вы продолжаете критиковать то, что было 15 лет назад в pre-NT системах.
Все процессы в Windows NT выполняются в выделенном адресном пространстве и изолированы друг от друга. и т.п. Но мы здесь собрались не для изучения архитектуры операционных систем, а для изучения администрирования систем при помощи программного кода.
Отметим только, что ядро Windows (файл Ntoskrnl.exe), находящийся в папке WindowsSystem32 написано на языке программирования С и немного на ассемблере. Логически ядро представляет из себя набор функций, реализующих фундаментальные механизмы операционной системы типа планирования потоков и синхронизации, к функциям ядра приложения не могут обращаться напрямую. Между ядром и приложениями находится так называемая исполнительная система. Роль исполнительной системы заключается в следующем. Для обеспечения необходимой скорости функционирования ядра, оно реализовано в виде, грубо говоря, единственной программы, внутри которой не организуются объекты в смысле объектов языков программирования. Управление между участками кода ядра передаются при помощи goto или вызова подпрограмм (функций) без образования классов в исходном тексте ядра и объектов во время функционирования. (языки С и ассемблер, какие на фиг классы?) В исполнительной системе уже применяется объектно ориентированный подход. То есть на уровне исходников это классы, а во время исполнения это уже объекты. Поскольку приложения не видят ядра, а взаимодействуют с более высокими уровнями, то сточки зрения приложений Windows – объектно-ориентированная система. С точки зрения выполнения кода ядра Windows – объектно- ориентированной системой не является.
Кстати, Вы можете заглянуть в папку System32 и посмотреть дату изменения Ntoskrnl.exe . Если система у Вас лицензионная, Вы пользуетесь Интернетом и Microsoft время от времени предлагает обновить систему, то дата изменения этого файла, скорее всего, будет одной из недавних, гораздо более поздней, чем дата приобретения и установки Вами системы. То есть время от времени Microsoft обновляет не только какие-то прибабахи, а ядро Вашей системы. Большой брат заботится о Вас.

Кому я адресую это повествование? Следующим товарисчам – Программистам, которые умеют программировать, многое об этом знают, но писали программы никак не относящиеся к управлению ОС Windows и даже ничего об этом не слышали. Админам, которые пользуются графическим интерфейсом и командной строкой, но не сильны в программировании, ну и, наконец, новичкам, которые ни программировали, ни командной строкой не пользовались и в графическом интерфейсе не очень то разбираются.
Преследуя интересы последних, спустимся с небес на землю и от высокопарных рассуждений о свойствах операционных систем перейдем к самым что ни наесть практическим вопросам. Дальше тон будет снисходительный (из самых добрых побуждений) пока мы с новичками не достигнем определенного уровня. Программисты и сисадмины могут это пропустить.
А первый практический вопрос состоит в том, что многие наслышаны о том, что программирование – это сложная вещь, языки программирования мудреные и их надо долго изучать. А нет ли какого такого языка, который можно было бы изучить быстро и как можно быстрее приступить к практическим делам?
И я Вам скажу. В Windows есть такой халявный язык, который можно изучить за пару часов, максимум за день!!!! И уже завтра писать программы. И этот язык называется VBScript. Программисты, конечно, улыбнутся, сисадмины пожмут плечами, а мы с новичками пойдем дальше.
А вообще у нас конечная цель управлять Windows на 4-х языках (ну для разнообразия). Это VBScript, PowerShell, С# и С++.
Да, у VBScript есть пара недостатков – это так называемый интерпретатор или язык написания скриптов – то есть работает относительно медленно. Но он работает медленно там, где скорость не нужна!!! Второй недостаток заключается в том, что если раньше Microsoft делала на него упор как на основной язык написания скриптов, то сейчас таковым является PowerShell.
Зато два достоинства – Изучим быстро, и Microsoft еще не сняла с него функции действующего языка, так что сможем писать реальные программы. (ну, для начала скрипты, это оговорка для тех, кто скрипты программами называть не хочет). Потом займемся С# (читается СИ шарп), потом подтянем PowerShell и C++. Сразу скажу, что если VBScript встроен во все версии Windows, PowerShell есть только в последних, то C# и С++ надо подтягивать с сайта Microsoft. Бесплатно и законно. Под именами C# Express и С++ Express.
Итак, начнем с VBScript. Программы в компьютере живут двойной жизнью. У них есть так называемый исходный текст, с которым работает программист. Это текст на формализованном английском, который называется языком программирования. Обладая исходным текстом сравнительно легко понять что программа делает и как она работает. Исходные тексты при помощи программ-компиляторов переводятся либо непосредственно в машинный код, который подается на вход процессора и исполняются либо готовят промежуточный так называемый байт-код, который перед подачей на выполнение проходит дополнительную обработку.
В описанных двух случаях в компьютере есть и исходная программа, и отдельно создается и хранится исполняемый код. Язык программирования в таком случае называется компилируемым.
В некоторых случаях исполняемый код не оформляется в виде загрузочного модуля, а генерируется непосредственно при обработке исходного текста так сказать “на лету”. В таком случае язык программирования называется интерпретируемым, а исходные тексты программ называются скриптами.
Язык VBScript драматически прост. На самом деле его никто не изучает. Ему обучаются по ходу дела, изучая скрипты, написанные другими. И только если что непонятно, то обращаются к руководствам по VBScript.
Тем не менее, для разогрева, так сказать, я сделаю несколько замечаний о программировании на VBScript.
Для написания скрипта на VBScript подойдет любой редактор текстов. Программа на зыке VBScript это текстовой файл с расширением vbs. Если у Вас нет под рукой ни одного такого файла, чтобы взять его за основу, то можете текст программы набирать в текстовом редакторе в файле типа .txt, а потом сохранить в виде файла типа .vbs. В дальнейшем редактируйте программу прямо в файле vbs. Только имейте ввиду. Если Вы будете щелкать по файлу типа vbs, то он будет начинать выполняться. Чтобы его редактировать, надо по нему щелкнуть правой кнопкой мыши и в открывшемся списке выбрать “изменить”.
Если у Вас расширения файлов не видны, то сделайте их видимыми, зайдя в панели управления в “оформление и темы”, далее в “свойства папки” и там “вид” и погасить галочку в строке “скрывать расширения для зарегистрированных типов файлов”.
В программах на языке VBScript присутствуют как исполняемые команды (их иногда называют операторами) так и комментарии, предназначенные не для компьютера, а для программиста.
Комментарии - это строчки или куски строчек после штриха ‘
Как правило, на одной строке помещается один оператор
Если оператор не помещается в одной строке, то его можно продлить на следующую строку при помощи знака подчеркивания _
Переменные в языке VBScript можно не объявлять. Но это считается дурным тоном и, как правило, переменные объявляются при помощи ключевого слова Dim
Чтобы запретить использование необъявленных переменных в начале программы пишут оператор
Option Explicit
Переменные в языке VBScript при объявлении не типизуются, но перед использованием переменную можно привести к определенному типу при помощи специальных функций,
Так, если Вы где-либо напишете Dim x=5
Затем Dim y=6, а затем попытаетесь x и y сложить, то пред сложением исполнительная среда VBScript преобразует 5 и 6 в символьный вид, начнет их рассматривать как строки и результат будет не 11, как можно было бы ожидать, а 56 – как сумма подстрок 5 и 6.
Для того, чтобы переменные x и y трактовались как числа их надо привести к числовому виду при помощи встроенной функции Cint (Convert to Integer)
И наоборот, для того, чтобы числа превратить в строки их надо конвертировать в строки при помощи функции Cstr (Convert to Str).



Все сказанное проиллюстрировано в программе сумматор
Начиная со строки ======= можно скопировать к себе в файл все до строки eeeeeeeeeeee. И если я где-нить не ошибся, то это будет действующий скрипт.
' ======= Начало программы сумматор=
' Это язык программирования VBScript
' Программа принимает с экрана одно число
' Потом принимает другое число
' Складывает их и показывает, что получится, если введенные числа
' перед сложением не преобразовать к числовому виду
' Затем программа преобразует введенные числа к числовому виду, складывает числа
' и выводит на экран правильный арифметический результат.

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

Option Explicit ' комментарии можно писать после выполняемой команды

' Option Explicit означает, что объявление переменных ( у нас это x1, x и т.д.) в этой
' программе обязательно
' Переменные объявляются написанием перед переменной слова Dim
' Такие слова в языке программирования называются ключевыми
' Если бы мы не вызвали команду Option Explicit, то переменные можно было бы не объявлять
' Но это считается дурным стилем
'
' Программа запрашивает с экрана одно число
' Потом запрашивает второе число
'Потом показывает, что получится, если эти числа складывать без преобразования
' Потом эти символьные числа преобразует в арифметические целые
' при помощи функции Cint
' Складывает целые числа
Dim x1, x2, x3, c1, c2,c3,c4, s1, s2
Wscript.echo "Summator -- Start"
c1=InputBox(s1, "Введите первое число")
c2=InputBox(s2, "Введите второе число")
c4=c1+c2 ' Это будет "Сложение символов"
MsgBox "Результат сложения введенных с экрана строк " & c4
c1=Cint(c1) 'преобразование символа в арифметическое число типа Integer
c2=Cint(c2) 'Преобразование символа в арифметическое число типа Integer
c3=c1+c2 'А это уже сложение чисел
c3=Cstr(c3) 'Преобразование Ineger в string для вывода результата
MsgBox "Получите арифметический результат " & c3
Wscript.echo "Summator -- End"
Wscript.Quit
' Eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee – конец программы Summator
Дальше не копировать!!!!!
Для того чтобы использовать эту программу надо строки с ‘ =======начало до
Строки ‘Eeeeeeeeeee
Переписать в файл типа vbs, щелкнуть по нему и он запустится на выполнение.

Если Вы теперь в одной из строк комментария замените штрих скажем на вопросительный знак, то Вы увидите, что программа выполняться не станет. Это говорит, о том, что интерпретатор VBScript не так уж и прост. Он не просто тупо начинает выполнять программу, он сперва проверяет синтаксис всех операторов программы, а потом уже пускает ее на вход процессора. Также Вы можете во время ввода ввести не цифры, а буквы. Вы также увидите, что программа до конца не сработает, а при попытке перевести букву в число выдаст ошибку. Ошибки первого типа называются ошибками времени трансляции. Обычно они безобидны и легко отыскиваются. Ошибки второго типа называются ошибками времени выполнения и борьба с ними намного сложнее.
Если внимательно посмотреть на нашу первую программу Summator, то легко увидеть, что собственно команд в программе всего две. В первом случае складываются символы c4=c1+c2 , во втором случае складываются числа c3=c1+c2
Все остальное – это либо комментарии, либо оператор Option Explicit, либо объявление переменных, либо системная функция вывода на экран, либо системная функция чтения с экрана, либо преобразование строк в числа и наоборот.
Такова судьба большинства программ на VBScript. На них, как правило, не пишут сложных алгоритмов, а организуют доступ к тем или иным функциям системы.[/off]
25 февраля 2011, пятница
Д Михельсон Д Михельсон
Итак, Вы видите, что в скрипте на языке VBScript присутствуют как собственно команды языка, так и некоторые другие конструкции.
[off]Насчет этих других конструкций.
Если Вы займетесь какой-нибудь деятельностью, не связанной с программированием, то в подавляющем большинстве случаев Вы будете опираться на вещи, ранее сделанные человеком. Ну, например, если Вы займетесь в поле или у себя в огороде земледелием, то Вам не придется самому изготовлять машины и оборудование. Вы не будете сами делать лопаты, тяпки, грабли, плуги, сеялки и т.п. Кто-то до Вас их уже сделал на заводах, при этом сами заводы по изготовлению сельхозмашин не делали металл, не добывали руду и т.д.
Так и в программировании. Огромное число программ уже давно написано до Вас. Ваша задача в большинстве случаев заключается не в написании программы с “нуля”, а в реализации с “нуля” только Вашей оригинальной задумки. Все стандартное и ранее написанное Вы должны просто правильно использовать в своей программе. Все грамотно написанные программы, как правило, существуют в двух видах – в конечном, предназначенном непосредственно для пользователей и в виде некоего полуфабриката, пригодного к вызову из программ, которые будут писать другие программисты в будущем. Конечно, последнее утверждение это некое упрощение. Есть программы, особенно большие, авторы которых не придают значения их оформлению в виде вызываемых модулей и наоборот, есть программы, которые никогда и не предназначались для конечных пользователей и существуют только в виде, пригодном для вызова из других программ.
Все сказанное Выше справедливо для всех операционных систем. Не исключение и Windows. Фирма Microsoft непрерывно занимается разработкой и переработкой программ, предназначенных не для конечных пользователей, а для вызова из программ прикладных программистов. Наборы таких модулей все время пополняются, переименовываются, придумываются новые концепции по работе с такими модулями и т.п. Но, конечно, все это не просто так. Основные цели – повышение производительности программистов и компьютеров, а также расширение функциональности.
В терминологии фирмы Microsoft Вы сможете встретить такие термины, как WinAPI, COM, DCOM, ActiveX, Windows Script Host, WMI, .ASP.NET, IIS, NET Framework и т.д. При этом при создании новых концепций фирма старается обеспечить преемственность. Так, если, например, .NET Framework новая технология, а COM постарше, то фирма делает так, чтобы разработчики, ориентирующиеся на .NET Framework могли воспользоваться наработками идеологии COM и т.д. В некотором смысле Windows это не просто исполнительная среда для выполнения программ, но и еще огромный конгломерат ранее наработанных вызываемых модулей, скомпонованных в большие “склады” софта со своим способами извлечения из них программных модулей, с хитроумными связями между модулями из разных “складов” и т.д.
Предметом нашего внимания на первом этапе будут “склады”, называемые WSH (Windows Script Host), WMI (Window Management Instrumentation) и в последующем .NET Framework.
Что же можно делать при помощи программных модулей, “складированных” в WSH и WMI? (Я уж не говорю про .NET Framework, в которой сейчас порядка 8000 модулей и каждый год-два добавляется еще по тысяче – другой и при их помощи можно делать, наверное, все).

Вот далеко не полный список

Вывод на экран различных сообщений
Прием с экрана данных, вводимых пользователем
Создание, копирование, удаление и перемещение файлов и папок
Чтение и запись в текстовые файлы
Обращение к документам Word, Excel, Access
Получение сведений об имени компьютера, текущего пользователя как локально так и при работе в сети
Получение информации о сетевом окружении (диски, принтеры и т.п.)
Получение информации из системного реестра и запись в системный реестр
Работа с журналом событий Windows
Завершение сеанса пользователя
Перезагрузка компьютера
Создание и удаление учетных записей пользователей
Выключение компьютера
Получение информации о BIOS
Получение информации о процессоре, памяти, звуковой, видео и сетевой карте (картах)
Запуск остановка и мониторинг служб
Изменение параметров служб
Создание и завершение процессов
……. И еще много чего…
В следующем параграфе посмотрим как это делается.[/off]
26 февраля 2011, суббота
Д Михельсон Д Михельсон
Поскольку многие из примеров, которые я планирую рассмотреть, получают и выводят различную информацию (или делают что-нибудь полезное, например, запускают или останавливают службу или создают учетную запись пользователя и т.д., но вместе с тем, что-то пишут в протокол), то сразу рассмотрим 2 способа вывода информации – на экран и в текстовой файл.
[off]На экран информацию можно вывести либо так: Wscript.Echo("Ваш текст")
Либо так: MsgBox(“Ваш текст”)

Пример:

Option Explicit
Wscript.Echo("123")
MsgBox("456")


Мы не будем вдаваться в подробности столь тривиального примера

Что касается вывода информации в файл, то тут будет чуток посложней, но все равно очень просто
В следующих скриптах мы создадим папку, текстовой файл и что-нибудь туда запишем.
Пока мы не будем разбирать детали этих скриптов. Оставим это на потом.
Сейчас нам важно ими воспользоваться.

Папку можно создать таким скриптом

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("C:VBScript")

Но это будет, как говорится, дурной стиль
Более культурный вариант такой
--------------------------------------------------------------------------------------------------------------
Option Explicit
Dim objFSO, objFolder, objShell, strDirectory
strDirectory = "c:VBScript"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
WScript.Echo strDirectory & " Облом. Папка уже есть "
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
WScript.Echo "Создана папка " & strDirectory
End If

If err.number = vbEmpty then
Set objShell = CreateObject("WScript.Shell")
objShell.run ("Explorer" &" " & strDirectory & "" )
Else WScript.echo "VBScript Error: " & err.number
End If

WScript.Quit

Теперь сделаем то же самое, но только с созданием файла

-------------------------------------------------------------------------------------

Option Explicit
Dim objFSO, objFolder, objShell, objFile
Dim strDirectory, strFile
strDirectory = "c:Vbscript"
strFile = "DataTrace.txt"


Set objFSO = CreateObject("Scripting.FileSystemObject")

' Проверка существования директории

If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
WScript.Echo "Создана папка " & strDirectory
End If

If objFSO.FileExists(strDirectory & strFile) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)
Wscript.Echo "Создан файл " & strDirectory & strFile
End If

set objFolder = nothing
set objFile = nothing

If err.number = vbEmpty then
Set objShell = CreateObject("WScript.Shell")
objShell.run ("Explorer" & " " & strDirectory & "" )
Else WScript.echo "VBScript Error: " & err.number
End If

WScript.Quit

Писать в текстовой файл, добавляя строки, можно следующим
скриптом (Сделанным по примитивной схеме, без проверок кодов возврата и др.)

Const ForWriting = 8 ' 8 значит, что строки будут дописываться
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:VBScriptDataTrace.txt", ForWriting)
objFile.Write Now 'Дата и время
objFile.Write vbCrLF 'новая строка
objFile.Close

Итак, мы, особо не вдаваясь в детали рассмотрели три примера – вывод инфы на экран,
Создание папки и текстового файла
Запись в текстовой файл

Будем рассматривать эти 3 примера как вспомогательные.
После этого наскоро рассмотрим пару каких-нибудь интересных, но уже полезных примеров
А потом погрузимся в анализ того, что мы написали.
Ну и т.д.[/off]
26 февраля 2011, суббота
Д Михельсон Д Михельсон
Прежде чем рассматривать управление компьютером, поговорим о его аппаратной конфигурации.
[off]Многие пользователи для ее определения используют программное обеспечение высокого уровня, рассчитанное на конечного пользователя, ну там программы типа EVEREST и т.п.
Вместе с тем, используя инфу из таких программ не многие до конца знают как эта информация собирается и предоставляется Вам для красивых и симпатичных отчетов.
Здесь я попробую сперва привести простейшие примеры принципов сбора такой информации, а потом мы можем погрузиться в дебри того как она получается.
Правда, Вы резонно можете обратить внимание на то, что если мы с Вами будем получать некоторые характеристики оборудования, то сперва мы будем представлять их отнюдь не в таком красивом виде как это делает тот же EVEREST. Для того чтобы не только получать информацию, но и красиво ее представлять, таких языков как VBScript совершенно недостаточно. Для качественного представления информации нужно изучить такие вещи как C++, С# или VB.NET (это не VBScript) и огромный пласт технологии программирования в Windows, который называется Windows Forms (в среде .NET). Можно пользоваться и программным инструментарием сторонних разработчиков таким как Delphi и т.д.
Итак, допустим нам интересно ознакомиться со скриптами, при помощи которых можно что нить узнать о процессоре, памяти, дисках, видео и звуковых картах, сетевых адаптерах и т.п. В таком случае мы можем зайти на сайт Microsoft вот на >>>ЭТУ страницу и полистать приведенные там примеры. Возьмем, для примера, процессор. Скрипт там будет такой:

strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\" & strComputer & " ootcimv2")
Set colItems = objWMIService.ExecQuery(_
"Select * from Win32_Processor")
For Each objItem in colItems
Wscript.Echo "Processor Id: " & objItem.ProcessorId
Wscript.Echo "Maximum Clock Speed: " _
& objItem.MaxClockSpeed
Next

Перепишите этот скрипт к себе на ПК в какой-нибудь файл типа vbs и запустите.
Вы увидите, что он выведет всего 2 характеристики – серийный номер процессора и его частоту.
Естественно, Вы можете сказать, что тот же EVEREST Вам выдаст о процессоре в 10 раз больше информации.
Может даже возникнуть вопрос, а на фига такие скрипты и какой от них толк, если есть намного более мощные программы.
Но не торопитесь, если походить по Интернету, то там можно наткнуться и на такие примеры скриптов
на эту же тему (См. >>> ЗДЕСЬ)

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem in colItems
Wscript.Echo "Address Width: " & objItem.AddressWidth
Wscript.Echo "Architecture: " & objItem.Architecture
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "CPU Status: " & objItem.CpuStatus
Wscript.Echo "Current Clock Speed: " & objItem.CurrentClockSpeed
Wscript.Echo "Data Width: " & objItem.DataWidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Ext Clock: " & objItem.ExtClock
Wscript.Echo "Family: " & objItem.Family
Wscript.Echo "L2 Cache Size: " & objItem.L2CacheSize
Wscript.Echo "L2 Cache Speed: " & objItem.L2CacheSpeed
Wscript.Echo "Level: " & objItem.Level
Wscript.Echo "Load Percentage: " & objItem.LoadPercentage
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Maximum Clock Speed: " & objItem.MaxClockSpeed
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
Wscript.Echo "Processor Id: " & objItem.ProcessorId
Wscript.Echo "Processor Type: " & objItem.ProcessorType
Wscript.Echo "Revision: " & objItem.Revision
Wscript.Echo "Role: " & objItem.Role
Wscript.Echo "Socket Designation: " & objItem.SocketDesignation
Wscript.Echo "Status Information: " & objItem.StatusInfo
Wscript.Echo "Stepping: " & objItem.Stepping
Wscript.Echo "Unique Id: " & objItem.UniqueId
Wscript.Echo "Upgrade Method: " & objItem.UpgradeMethod
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "Voltage Caps: " & objItem.VoltageCaps
Next

Нетрудно догадаться, что здесь приводится гораздо больше информации о процессоре.
2 этих примера подводят нас необходимости разобраться в вопросе, откуда же информация черпается, сколько там ее находится и т.д. и т.п.
Но об этом в следующем параграфе.[/off]
26 февраля 2011, суббота
Д Михельсон Д Михельсон
Ну раз тексты продолжают портиться, то действительно, придется
остановиться по техническим причинам.
Тема закрыта.
В заключение отвечу модератору на замечание, что языки программирования – узкоспециализированная веcчь.
По ссылкам на Google один только Ваш любимый php дает аж 15 миллиардов ссылок
и побивает Sex, Love, Hardware, Software, Auto, Women и Fishing вместе взятые… J
26 февраля 2011, суббота
BobNet BobNet
Доктор Михельсон;103356:
По ссылкам на Google один только Ваш любимый php дает аж 15 миллиардов ссылок и побивает Sex, Love, Hardware, Software, Auto, Women и Fishing вместе взятые…
[CENTER]Зайдите пожалуйста в процедурную ...
""
[/CENTER]


Доктор Михельсон;103356:
придется остановиться по техническим причинам. Тема закрыта.
[CENTER]Аминь ...
""
[/CENTER]
Есть 2 новых сообщения
У вас нет прав, чтобы писать на форуме, .