воскресенье, 27 февраля 2022 г.

Все-таки не выдержал и тоже решил написать про Украину и про “НЕТ ВОЙНЕ”

Задолбали псевдо-пацифисты. Где они были, когда людей жгли в Одессе? Где они были, когда убивали детей на Донбассе? Где они были, когда на Украине затыкали рты всем несогласным? А теперь повылезали из всех щелей. Войны они не хотят. Так Россия для того и проводит операцию, чтобы войны не было. Читать далее...


суббота, 26 февраля 2022 г.

ТСА в автоматизации - что это?

В любом направлении человеческой деятельности есть своя терминология. Есть она и в автоматизации. Поэтому я понемногу об этом рассказываю. Дозированно и доступно, чтобы никого не отпугнуть ))) Читать и комментировать...

Выражение в программировании

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


Зачем я снова возвращаюсь к азам? Ну, во-первых, эта группа изначально создана для новичков, поэтому и называется “Основы программирования”. А во-вторых, многие в начале пути обычно совсем не обращают внимание на терминологию, и поэтому путаются в ней даже после нескольких лет деятельности в области программирования.


Итак, выражение - это некая запись в исходном коде, инструкция, которая имеет и/или возвращает значение. То есть вот такую запись:


x


тоже можно считать выражением. Потому что х - это не просто буква. Это переменная, которая имеет какое-то значение. А раз она его имеет, то это выражение. Или другой пример:


100


И это, блин, тоже выражение. Любой литерал - это выражение.


Но в большинстве случаев выражения выглядят более сложными, и, как правило, они что-то вычисляют и возвращают результат:


х + 100


Это выражение возвращает результат операции сложения между х и 100. Оно состоит из двух операндов (х и 100) и оператора сложения (+).


Оператор - это элемент программного кода, который описывает какую-то операцию. В данном примере используется оператор сложения.


А операнды - это выражения, над которыми оператор выполняет операцию.


Результат выражения обычно сохраняют в какую-то переменную. Но в программировании этот процесс называется присваиванием:


у = х + 100


Здесь мы переменной у присвоили результат выражения х + 100. Так выполняется присваивание во многих языках программирования: С/С++, JavaScript, Python, , Visual Basic и других. Но есть и другие способы, например, в Паскале это делается так:


у := х + 100 


С одной стороны, нам приходится тратить время на то, чтобы напечатать дополнительный символ, но с другой - мы отсекаем таким образом возможность возникновения труднонаходимых ошибок в программе. Так что лично для меня присваивание в Паскале является более продуманным и безопасным.


Вот так всё запутано. Но на самом деле не сложно. Надо просто разобраться с этим один раз и тогда всё встанет на свои места.


среда, 23 февраля 2022 г.

Как появился Интернет


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


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


Эксперименты увенчались успехом - удалось создать сеть с заданными свойствами. Но она оставалась ограниченной в области применения. Персональных компьютеров в те времена не было, поэтому лишь оборонные предприятия и академические институты могли получить доступ к ARPANet - так эту сеть назвали.


ARPANet - это Advanced Research Projects Agency Network - сеть агентства перспективных исследовательских разработок.


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


А окончательно Интернет стал доступен массам где-то в 1993 году. И уже начали появляться сайты и способы их создания, такие как HTML, CSS, языки программирования для веб-разработки и т.п.


Так появился Интернет - пытаясь защититься от ядерного взрыва, его создатели сделали настоящую информационную бомбу, которая навсегда изменила мир. И сегодня положение дел такое, что современные люди жить без Интернета уже не могут…


Что нового в Python 3.1

Для тех, кто интересуется историей развития Python, перевод официальной документации из раздела об изменениях в версии 3.1 относительно версии 3.0. Читать далее...


вторник, 22 февраля 2022 г.

Фронтенд, бэкенд и фулстек

Давно хотел об этом рассказать, да всё как-то руки не доходили. Но вот дошли…


Если вы увлекаетесь программированием, то наверняка слышали такие слова, как фронтенд-разработчик, бэкенд-разработчик и фулстек-разработчик. Что они обозначают?


Если вы знаете английский, то можете догадаться. Но я на всякий случай поясню.


Фронтенд (front-end) - клиентская сторона пользовательского интерфейса к программно-аппаратной части сервиса. Слово можно перевести на русский как “передний конец” или “передняя часть”, из чего следует, что это часть программы, которая взаимодействует с пользователем.


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


Бэкенд (back-end) - программно-аппаратная часть сервиса, отвечающая за работу его внутренних функций. Можно перевести как “задний конец” или “задняя часть”.


Соответственно, бэкенд-разработчик - это программист, который разрабатывает части программного обеспечения, которые не взаимодействуют напрямую с пользователем, а стыкуют интерфейсную часть, созданную фронтенд-разработчиком, с “железом” и/или, например, серверной частью программного обеспечения.




Термины появились в программной инженерии в ходе развития принципа разделения ответственности между внешним представлением и внутренней реализацией.


Бэкенд для предоставления своей функции реализует API, используемые фронтендом. Таким образом, фронтенд-разработчику не нужно знать особенности реализации сервера, а бэкенд-разработчику - реализацию интерфейса пользователя.


Но есть ещё и универсальные солдаты - фулстек-разработчики. Это люди, которые знают и то и то. При этом в большинстве случаев им не нужны глубокие знания фронтенда и/или бэкенда. Потому что обычно они являются неким связующим звеном между фронтами и ендами, общаются с заказчиками, занимаются тестированием, планированием и т.п. То есть это скорее руководитель проекта, чем программист. Хотя всё зависит от требований работодателя. Может кто-то из них и мечтает заменить двух программистов одним.


Фулстек (full-stack) можно перевести как “полный пакет”. То есть программист, который может создать ПО “под ключ”, включая все возможные его части.


Эти термины наиболее часто используются в веб-программировании. В прикладном программировании такое разделение встречается реже.


К технологиям разработки front-end можно отнести, например, HTML, CSS, JavaScript.


К технологиям back-end разработки относятся PHP, Java, Python, JavaScript (Node.js) и другие.



Самоучитель по JavaScript для начинающих

JavaScript появился более 20 лет назад. Тогда это был простенький язык, предназначенный для использования в браузерах. С тех пор много воды утекло. Некоторые языки, зародившиеся в те времена, уже умерли. Но не JavaScript. Теперь это полноценный и мощный язык программирования, способный решать задачи как на стороне клиента, так и на стороне сервера и на локальном компьютере. Читать далее...

На что обратить внимание при покупке автомобиля

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


понедельник, 21 февраля 2022 г.

Hello World на Python

Продолжаю серию рассказов о том, как написать программу “Hello, World” на разных языках программирования. Мы уже знаем, как это сделать на Паскале, С++ и Ассемблере. Теперь очередь за Python.


Итак, программа будет самая простая из всех возможных (на то он и Python):


print("Hello, WORLD!!!")


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


print('Hello, WORLD!!!')


На всякий случай напомню, что в версии Python 2.x вывод на экран выполнялся ИНСТРУКЦИЕЙ с тем же именем:


print "Hello, WORLD!!!"


Но, начиная с версии 3, print стала ФУНКЦИЕЙ, и так больше делать нельзя. Однако, если вдруг вам придётся программировать для версии 2, то имейте это ввиду. 




Как видите, первые два примера отработали без вопросов. А попытка использовать третий пример в Python 3.10 привела к сообщению об ошибке. Потому что такая запись больше не поддерживается.


На этом всё. Изучайте Python - на сегодня это один из самых востребованных языков программирования.




Комментарии в Ассемблере

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


Датчики уровня в системах автоматизации

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


суббота, 19 февраля 2022 г.

На собеседование попадают единицы



Один из сотрудников отдела кадров крупного предприятия как-то пожаловался, что из 8000 присланных в компанию резюме на заявленную вакансию по уровню квалификации подходят лишь 60. Это всего лишь 0,75%.


Менее 1%, Карл!


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


Что из этого следует?


Ваше резюме должно быть не только хорошо и правильно оформлено, но бить точно в цель.


Если вы хотите повысить вероятность того, что вас пригласят на собеседование, то ОБЯЗАТЕЛЬНО сделайте следующее:


  • Внимательно изучите требования к вакансии.

  • Внимательно перечитайте ваше резюме и определите, подходит ли оно к этим требованиям.

  • Если подходит, но не так хорошо, как хотелось бы, то доработайте ваше резюме под эти требования. Разумеется, все данные в резюме должны быть правдивыми. Но ведь правда тоже бывает разной. Например, если работодатель требует стаж работы по специальности не менее 5 лет, а у вас 3, то это не означает, что не надо отправлять резюме этому работодателю. Можно просто не писать стаж работы цифрами, а, например, сказать, что есть практический опыт реализации проектов или что-то типа того. Здесь главное - не перейти грань между враньём и неполной информацией. Ну и попасть на собеседование - это самое главное. А уж там вы сможете убедить работодателя, что вы прекрасно справитесь с работой и с трёхлетним стажем.


И при любых сомнениях лучше позвонить и уточнить. Сказать сотруднику отдела кадров, что вы такой-то и такой-то, что ваше резюме не на 100% соответствует требованиям, но зато у вас есть другие прекрасные качества, например, способность к обучению, вы однозначно справитесь с этой работой.


И помните, сейчас для вас главное - попасть на собеседование. А вот потом уже надо будет думать, как его успешно пройти. Но это уже тема другого рассказа…


Вступайте в группу, чтобы его не пропустить



Что такое порты ввода-вывода


Любая система сама по себе бессмысленна, если она не умеет обмениваться данными с внешним миром. Микропроцессорные системы и микроконтроллеры делают это через порты ввода-вывода (I/O - Input/Output).


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


Порт вывода выполняет обратную функцию. В него процессор записывает различные числа, которые затем поступают на внешние устройства в виде электрических сигналов. 


С портами ввода-вывода процессор может выполнять значительно меньше операций, чем, например, с памятью. В то же время в порты также можно записывать и считывать данные. Но хранение чисел - это не главное назначение портов. Главное назначение - это именно ввод-вывод данных, то есть обмен данными с внешним миром.


Процессор считывает порты ввода в виде чисел и обрабатывает полученные числа в соответствии с алгоритмом программы. Затем записывает результат (тоже числа) в порты вывода. Эти числа (сигналы) используются для управления. Управлять можно любым устройством, которое допускает электрическое управление, это индикаторы, дисплеи, электромагнитные реле, электромоторы, электропневмоклапаны, электрические нагреватели и другие исполнительные устройства.


В старых системах использовались специальные устройства ввода-вывода, выполненные на отдельных микросхемах или даже в виде отдельных модулей. Сейчас порты ввода-вывода обычно встроены в корпус микроконтроллера.




пятница, 18 февраля 2022 г.

Плюсы и минусы фриланса

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


Как появился Си Плюс Плюс

Не знаю, как вы, но я люблю историю и истории. Мне нравится читать рассказы о том, как всё создавалось, появлялось, придумывалось… Это касается и языков программирования.

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


Итак, очень давно, в начале 70-х, команда очень продвинутых людей разрабатывала операционную систему Multics (в некоторых источниках Multix). Сейчас о ней уже мало кто помнит, хотя она применялась аж до 2000 года. В Википедии можно найти несколько ссылок, но там в основном текстовые документы на английском. Нашёл только одну картинку:



Здесь показана конфигурация оборудования типичной системы Multics


И тем не менее, есть даже целый сайт, полностью посвящённый этой системе. Так что “ничто на земле не проходит бесследно…”


Несмотря на то, что бесследно работа над Multics не прошла, в целом проект провалился. Но небольшая группа инженеров, вдохновлённая этой системой, решила использовать её фрагменты в небольшой операционной системе, которую они назвали Unix.


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


Инженерам это сильно надоело, и был разработан язык С (Си), который являлся языком высокого уровня (иногда его называют языком среднего или даже низкого уровня), и позволял писать программы без оглядки на аппаратное обеспечение.


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


Поэтому язык С был взят за основу, дополнен новым возможностями, отвечающими современным требованиям. Так на свет появился язык С++




четверг, 17 февраля 2022 г.

Интернет, интранет и экстранет


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


Итак, Интернет - это глобальная мировая сеть с открытым доступом. Эта сеть состоит из множества других сетей. То есть Интернет - это сеть сетей, где обмен данными происходит по определённым и одинаковым для всех участников правилам (протоколам). Эти правила задают именно принципы обмена данными, а не отображения их. То есть HTML, например, не является инструментом обмена данными. Он отвечает за их представление пользователю.


Интранет и Экстранет работают по тем же правилам, что и Интернет, и используют то же программное обеспечение. Отличия связаны только с правилами доступа в сеть.


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


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


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


Ну вот как-то так…


среда, 16 февраля 2022 г.

Ошибка на 1000000 долларов

Не знаю, так ли это, но если верить Интернету, то это тот самый Mariner 1. 


В 1982 году NASA (National Aeronautics and Space Administration - Национальный комитет по аэронавтике и исследованию космического пространства) отправил космический зонд Mariner 1 для изучения планеты Венера. 


Однако ракетоноситель, несущий данный космический зонд, во время полета сбился с курса, и NASA пришлось его взорвать. И все это произошло только из-за того, что в цикле FOR NEXT вместо команды 


FOR I = 1,3


была команда


FOR I = 1.3


Как видите, в ней вместо запятой поставлена точка. Вместо того чтобы приказать компьютеру выполнить цикл три раза, команда присвоила переменной I значение 1.3. В результате этой ошибки ракетоноситель получил неправильные инструкции, и NASA потерял ракету, на которую были затрачены миллионы долларов, а также её груз. 


И всё это из-за того, что какой-то программист случайно нажал не на ту клавишу. Всего один раз. Как говорят народные шутники: “один раз - не пи…ас”. Но не в этом случае.


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


Так что ошибки в программах могут очень дорого стоить. И хорошо ещё, если заплатить придётся только деньгами…



Чем JavaScript отличается от Java и С++

Когда я впервые узнал о JavaScript, я уже умел кое-что делать на С++. И синтаксис JavaScript мне показался очень похожим на С++. Я даже сначала подумал, что JavaScript - это какая-то упрощённая версия С++ или Java (хотя вру - о Java я тогда ещё вообще ничего не знал).

Однако позже выяснилось, что JavaScript - это совершенно самостоятельный язык программирования. Хотя с точки зрения синтаксиса он напоминает С/С++ и Java такими конструкциями, как if, while или &&. Однако похожесть на синтаксисе и заканчивается.


JavaScript - это нетипизированный язык. То есть здесь не надо объявлять типы переменных. Объекты в JavaScript отображают имена свойств на произвольные значения. И этим они уже сильно отличаются от объектов в С++ или Java. Ещё сильнее отличается механизм объектно-ориентированного наследования.


JavaScript - это интерпретируемый язык. И некоторые его инструменты, такие как регулярные выражения и средства работы с массивами реализованы по подобию языка Perl.


Ну и назначение JavaScript совершенно иное. В отличие от Java и С++ он предназначен, в основном, для работы с веб-браузерами.


Так что JavaScript - это очередная попытка взять лучшее из разных языков программирования и сделать что-то очень крутое. И эта попытка, надо сказать, вполне удачная…


Лада-Веста - чем примечателен пробег 21700 км

Машине моей уже 1,5 года, пробег приближается к 22000 км. Никаких происшествий не случается. Даже скучновато становится. Приходится истории "высасывать из пальца" ))) Читать и комментировать...


вторник, 15 февраля 2022 г.

Присваивание значений в Python

В Python, как и в С/С++ и во многих других языках, присваивание выполняется с помощью знака “равно” (=). В левой части записывается переменная, которой нужно присвоить значение, а в правой - какое-то значение, которое будет присвоено переменной. В правой части может быть также выражение или другая переменная. Примеры:

x = 100

y = x + 50


В первой строке переменной х мы присваиваем значение 100. Во второй строке переменной у присваиваем результат выражения (х + 50).


В интерпретаторе при выполнении присваивания присвоенное значение на экран не выводится.


Значение можно присвоить одновременно нескольким переменным:


x = y = z = 13


Здесь мы присваиваем переменным х, у, z значение 13. Убедиться в том, что это работает, можно так:


print(x + y + z)


На экран будет выведено число 39.


Если в выражении используются смешанные типы данных, например, целые и вещественные, то результатом выражения будет вещественное число. Два примера:


x = 10 + 1

print(x)


x = 10 * 1.1

print(x)


Первый пример выведет на экран целое число 11, а второй - вещественное число 11.0.


Вот картинка IDLE Python с приведёнными выше примерами: