Каким образом можно изучить C++ с нуля?
Как известно, у C++ крутая кривая обучения, но время, потраченное на изучение этого языка, сотворит чудеса для вашей карьеры и выделит вас среди других разработчиков. Вам будет легче осваивать новые языки, вы разовьете реальные навыки решения проблем и создадите прочную основу на основах программирования.
C++ поможет вам привить хорошие навыки программирования (то есть ясный и последовательный стиль кодирования, комментировать код по мере его написания и ограничить видимость внутренних компонентов класса для внешнего мира), а поскольку абстракции практически нет, вам необходимо определить практически все атрибуты, необходимые для работы вашего кода.
В этом посте мы познакомим вас с дорожной картой для начинающих по изучению C++ по курсам https://tutortop.ru/courses_selection/kursy_razrabotki_na_c/ или самостоятельно, чтобы вы могли чувствовать себя уверенно, начиная свой путь.
Вот что мы рассмотрим сегодня:
- Краткая история C++
- Обзор инструментов и программного обеспечения C++
- Введение в язык и синтаксис C++
- C++ Часто задаваемые вопросы
- Следующие шаги
Краткая история C++
Отличный способ начать работу с C++ — изучить его историю. C++ — один из старейших языков программирования, поэтому существует множество различных версий. Знакомство с этой историей поместит вас в сообщество программистов на C++ и даст вам представление о его возможностях.
Язык программирования C++ был изобретен в 1979 году Бьярном Страуструпом, когда он работал над своей докторской диссертацией в Bell Labs. C++ был разработан как расширение языка программирования C, отсюда и его первоначальное название «C с классами». Целью Страуструпа было добавить гибкости и ООП (объектно-ориентированного программирования) к языку C. Он включил такие функции, как классы, строгая проверка типов, аргументы функций по умолчанию и базовое наследование. Название было изменено на C++ в 1983 году, которое происходит от ++оператора.
C++ был выпущен для коммерческого использования в 1985 году, но еще не был стандартизирован. В 1990 году был выпущен компилятор Borland Turbo C++, который добавил много новых функций. Первый международный стандарт C++ был опубликован в 1998 году, известный как C++ 98.
Сюда входит стандартная библиотека шаблонов, предоставляющая общие функции программирования и структуры данных. На основании отзывов комитет пересмотрел эти стандарты в 2003 году, а язык обновления был переименован в C++ 03.
В 2011 году, когда был завершен C++ 11, язык претерпел еще одну ревизию. Эта версия включает auto , среди прочего, такие функции, как поддержка Regex, новые библиотеки, новый синтаксис для циклов, ключевое слово и новые классы контейнеров. С тех пор были выпущены еще две ревизии: C++ 14 и C++ 17.
Обзор инструментов C++
Чтобы правильно создавать программы на C++ во время прохождения курсов https://tutortop.ru/courses_selection/kursy_po_c_razrabotke/, вам необходимо знать несколько инструментов и программного обеспечения: текстовый редактор, компилятор C++, компоновщик и библиотеки.
Текстовые редакторы
Чтобы написать программу на C++, вам понадобится текстовый редактор. Думайте об этом как о пустом документе Microsoft Word; именно здесь вы будете писать свой код. Подойдет любой текстовый редактор, некоторые даже встроены в ваш компьютер, но мы рекомендуем использовать текстовый редактор, предназначенный для программирования. Есть много вариантов, но некоторые из наиболее распространенных текстовых редакторов для разработчиков на C++:
- Notepad ++: открытый доступ, легкий, простой
- Atom: бесплатно, поддерживает множество языков, ограниченное количество плагинов
- Sublime Text: 80 долларов, уникальные функции, простой макет
- Bluefish: легкий, быстрый, мультиплатформенный, поддерживает множество языков.
Компиляторы
Компилятор просматривает ваш исходный код для выполнения двух важных задач: во-первых, он проверяет, соответствует ли ваш код правилам языка C++; во-вторых, он переводит ваш код в объектный файл. Некоторые известные компиляторы — это GCC, Clang и компилятор Visual Studio C++. Мы не рекомендуем Turbo C++, так как он немного устарел.
Компоновщик
Как только компилятор творит чудеса, объектный файл отправляется программе компоновщика, которая выполняет три задачи: во-первых, она объединяет все ваши объектные файлы в единую программу; во-вторых, он связывает файлы библиотеки с вашей программой; и, в-третьих, он выявляет любые проблемы с именами между файлами или ссылками.
Библиотеки
Библиотека — это, по сути, предварительно упакованный пакет кода, который можно использовать повторно. Библиотека C++ называется стандартной библиотекой C++, и она связана почти со всеми программами на C++. Вы также можете добавить в свою программу другие библиотеки, если вам не нужна стандартная библиотека C++ .
Интегрированная среда разработки (IDE)
Многие программисты на C++ используют IDE вместо текстового редактора и компилятора. IDE — это универсальный инструмент для программирования на C++. Он включает текстовый редактор, компоновщик, компилятор и библиотеки. Не существует подходящего или неправильного компилятора. Все сводится к вашим потребностям и тому, какой макет лучше всего подходит для вас. Некоторые популярные IDE:
- Code::Blocks: бесплатные, востребованные функции, плагины пользователей
- Visual Studio Code: открытый исходный код, отличные функции, кроссплатформенность
- Eclipse: открытый исходный код, простой, кроссплатформенный, необходимо установить компоненты C++
Введение в язык и синтаксис C++
C++ — объектно-ориентированный язык программирования. Это означает, что программы C++ моделируются вокруг объектов и классов, которыми вы можете управлять и манипулировать, применяя функции. Языки ООП предлагают четкую структуру программы и помогают разработчикам моделировать реальные проблемы.
Язык разработан, чтобы предоставить вам большую свободу и силу, что и хорошо, и плохо. Вы полностью контролируете, как ваша система использует ресурсы; нет автоматического управления памятью, как в Java.
У вас есть возможность выбирать, как распределяется память (например, стек или куча); в C++ нет интерпретатора, который помешал бы вам писать ошибочный код.
Чтобы начать работу с C++, вам необходимо ознакомиться с синтаксисом. Это проложит путь для оставшейся части вашего пути к C++ и поможет вам создавать оптимизированные программы, которые будут безопасными и не содержат ошибок.
Давайте посмотрим на код C++!
Глядя на приведенный ниже код, вам может быть интересно, что все это такое и что это значит. Добро пожаловать в синтаксис C++.
Что такое синтаксис? Синтаксис подобен грамматике языка программирования. Это основная основа всего, что вы будете писать на C++.
Это правила, которые определяют, как вы пишете и понимаете код C++. Давайте посмотрим на пример кода, чтобы познакомиться с синтаксисом.
Объяснение синтаксиса
#include <iostream> — это библиотека заголовочного файла. Заголовочный файл импортирует функции в вашу программу. По сути, мы просим программу скопировать содержимое из файла с именем <iostream> . Это означает поток ввода и вывода , и он определяет стандарты для объектов в нашем коде.
using namespace std означает, что мы используем имена объектов и переменных из стандартной библиотеки ( std). Этот оператор часто сокращается с помощью ключевого слова std и оператора :: . int main( ) используются для определения основной функции.
Это очень важная часть программ на C++. Функция по существу определяет действие для вашего кода. Все, что находится в фигурных скобках < >, будет выполнено.
cout это объект (произносится «видеть»). В этом примере он определяет наши выходные данные: строки слов. Мы пишем новый объект, используя cout во второй строке. Символ \n заставляет текст исполняться в другой строке.
Включение двух \n\n создает пустое пространство. Выражением return 0 мы сообщаем программе, что ничего не вернется. Мы выводим только строки текста. Обратите внимание, что мы используем << оператор для именования наших объектов. Точка с запятой ; функционирует как точка.
Термины и словарь C++
Теперь, когда у нас есть представление о том, как выглядит код C++, давайте определим некоторые из упомянутых нами терминов и познакомим вас с некоторыми другими.
Ключевые слова
Ключевые слова — это заранее определенные имена, которые можно использовать для идентификации вещей в вашем коде. Ключевые слова — это идентификаторы определенных объектов, переменных или действий. Вы также можете создавать свои собственные ключевые слова. Вот несколько примеров ключевых слов:
- goto
- float
- public
- class(1)
- int
Переменные
Переменные подобны контейнерам, в которых хранятся значения. Чтобы объявить переменную, вы должны присвоить ей значение type и использовать правильное ключевое слово. Всем переменным в C++ необходимо имя или идентификатор. При создании идентификаторов необходимо соблюдать несколько основных синтаксических правил.
- Имена чувствительны к регистру
- Имена могут содержать буквы, цифры и символы подчеркивания.
- Имена должны начинаться с буквы или символа подчеркивания.
- Имена не могут содержать пробелы или специальные символы (!, #, @ И т. Д.)
- Имена не могут использовать зарезервированные ключевые слова
Есть шесть различных типов переменных:
Типы данных
Типы данных — это классификации различных типов данных, которые вы можете использовать в программе. Типы данных сообщают нашим переменным, какие данные они могут хранить. В C++ есть три типа данных:
Примитивные типы данных: это встроенные данные, которые вы можете использовать для объявления переменных. Они включают в себя integer , character , boolean , floating point , double floating point , void , и wide character .
Производные типы данных: они являются производными от примитивных типов данных. Они включают в себя function , reference , array , и pointer .
Типы данных, определяемые пользователем: они определяются вами, программистом.
Строки
Строки — это объекты в C++. Они представляют собой набор символов в » » кавычках, как наша строка «Hello World» . Поскольку они являются объектами, мы можем выполнять с ними функции, такие как функция length( ) , определяющая длину строки.
Операторы
Операторы — это символы, которые управляют нашими данными и выполняют операции. В C++ мы можем перегружать операторы, чтобы они работали для классов, определенных программистом. Перегрузка оператора в основном означает, что оператор может одновременно выполнять более одной функции. В языке C++ есть четыре типа операторов
- Арифметические операторы используются для математических операций. Они работают как алгебраические символы.
- Операторы присваивания предназначены для присвоения значений нашим переменным.
- Операторы сравнения сравнивают два значения.
- Логические операторы определяют логику между значениями.
Объекты
Объект — это набор данных, с которыми мы можем действовать. У объекта в C++ есть атрибут (его свойства) и метод (его возможности). Вы создаете объекты, используя класс. Думайте об этом как о чертеже объекта.
Вы создаете класс, используя ключевое слово class . Вы должны определить спецификатор доступа, например public , private или protected . В ключевых словах public говорится, что класс доступен за пределами этого класса. Определив свой класс, вы можете определять свои атрибуты и объекты. Взгляните ниже на пример класса и объекта.
Функции
Функции — это блоки кода, которые запускаются при вызове. Они являются рабочей лошадкой для вашей программы и используются для выполнения операций и манипуляций с вашим кодом.
Они чрезвычайно важны для повторного использования кода и помогают лучше модулировать ваш код. Думайте об этом как о действиях, которые вы инициируете. В C++ есть предопределенные функции, как в main( ) нашем первоначальном примере.
Чтобы создать функцию, вы должны дать ей имя (так называемое объявление) и круглые скобки ( ) . Затем вы можете вызвать эту функцию в любой момент, используя это name( ) .
Есть много способов использования функций. Вы также можете присоединять к своим функциям возвращаемые значения, которые определяют, должна ли функция выводить какую-либо информацию. В ключевых словах void говорится , что не будет возврата. Ключевое слово return , с другой стороны, будет призывать к выходу типа данных.
Условные утверждения
Они позволяют выполнять проверки того, следует ли выполнять блок кода. В C++ есть четыре условных оператора:
- if: при выполнении определенного условия будет выполнено определенное действие
- else: вместо этого будет выполнено определенное действие, если это условие не выполнено
- else if: новое условие будет проверено, если первое не выполнено
- switch: проверяет переменную на соответствие списку значений
Циклы
Циклы похожи на условные операторы. Они выполняют блоки кода, пока достигается определенное условие. В C++ есть два типа циклов:
- while циклы: этот цикл будет продолжать повторять ваш код, пока условие не возвращается true .
- for циклы: это используется, когда вы знаете точное количество циклов в своем коде.
Теперь, когда у вас есть базовое представление о синтаксисе C++, давайте рассмотрим некоторые часто задаваемые вопросы и ресурсы, которые помогут вам начать путешествие по C++.
C++ FAQ
Сколько времени нужно, чтобы изучить C++?
Ну, это действительно зависит от того, что подразумевается под «учиться». Если вы серьезно относитесь к этому языку, то вы никогда не закончите его изучение. Разработчики могут посвятить всю свою карьеру C++ и при этом чувствовать, что им есть чему поучиться.
С учетом сказанного, если вы поработаете, вы сможете выучить достаточно C++ за 1-2 года и при этом оставаться отличным разработчиком.
Короче говоря, на этот вопрос нет однозначного правильного ответа, и он во многом зависит от вашего стиля обучения, целей, образовательного плана и необходимых знаний.
Для чего используется C++?
C++ ориентирован на производительность больших систем, поэтому он используется в большом количестве программ и задач, где производительность важна. Это включает в себя, помимо прочего, операционные системы, разработку игр, 3D-анимацию, веб-браузеры (они используются в Firefox и Chrome), программное обеспечение для офисов, медицинское программное обеспечение и многое другое. C++ используется во всех играх Blizzard, большинстве консольных игр, Adobe Photoshop, Mozilla Thunderbird, технологиях PDF и сканерах МРТ.
В чем разница между C и C++?
Основное отличие состоит в том, что C++ является объектно-ориентированным языком, а C — процедурным языком программирования. C не позволяет определять функции внутри структур, в то время как C++ делает это. C и C++ также имеют несколько различных функций, ключевых слов и процедур распределения памяти.
В чем разница между C++ и C #?
C# — гораздо более новый язык (созданный Microsoft в 2000 году), он построен на C++, поэтому они имеют схожий синтаксис. Одно из основных различий между ними — их гибкость. C# показывает предупреждения компилятора при написании кода, чтобы уменьшить количество ошибок, а C++ — нет.
C# работает только в ОС Windows, а C++ может работать на любой платформе (MacOS, Linux, Windows и т. Д.). C# отлично подходит для мобильных и веб-приложений, а C++ известен производительностью и программами, которые работают напрямую с оборудованием. Они также немного по-другому обрабатывают управление памятью.
Схож ли C++ с другими языками программирования?
C++ является основой для многих других объектно-ориентированных языков программирования, таких как Java, JavaScript, Python, PHP, Rust, C # и других. Изучение синтаксиса C++ облегчит изучение других языков программирования.
Какой язык программирования лучше всего изучать?
На этот вопрос действительно нет однозначного ответа, и каждый разработчик скажет вам что-то свое. Это зависит от того, какая работа вас интересует, от ваших необходимых знаний и ваших карьерных целей. По правде говоря, выучить любой язык программирования сложно, но вы можете изучить любой из них.
Несколько преимуществ использования C++: широко распространенный синтаксис, вы вынуждены думать об управлении памятью, и он знакомит вас с множеством парадигм программирования, что является отличным способом расширить ваше мышление и найти новые подходы к решению проблем.
Насколько востребован C++? За С++ хорошо платят?
Да и да. Если вы потратите время, то будете вознаграждены. У разработчиков C++ уже есть высокие зарплаты, и ожидается, что они будут расти в ближайшие годы. C++ переживает период возрождения популярности, поскольку он отлично подходит для таких надежных приложений, как беспилотные автомобили и виртуальная реальность. Поскольку у C++ более крутая кривая обучения, чем у большинства языков, полученные вами навыки выделят вас при приеме на работу.
За какое время с нуля до высокого уровня получится овладеть с++ если очень очень плотно изучать?
С программированием знаком , знаю питон основы ( на этих основах юзаю уже год+) ), что то пытался в вебе(неуспешно) , и сейчас с++ начал по чучуть знакомится (нравится).
Хочу очень конкретно заняться с++ что бы когда то там выйти на работу и нормас зарабатывать.
Сколько уйдет на это времени если конкретно изучать 8 часов в день без выходных ?
Какой уровень будет спустя пол года , год , два ?
- Вопрос задан более года назад
- 3493 просмотра
- Вконтакте
21 день
- Вконтакте
Да никто не знает сколько конкретно у ТЕБЯ это займет.
Все люди разные.
- Вконтакте
Нормас зарабатывать можно и на питоне.
- Вконтакте
- Вконтакте
Не путать язык программирования и библиотеки/фреймворки и принципы их построения. А еще есть банально алгоритмы и умение их создавать и хотя бы правильно использовать. А еще есть тулчейн — рабочее окружение, без которого в принципе запустить сборку не получится, и очень часто умение настраивать его под задачу может занимать больше времени и знаний чем сама разработка. Попробуй к примеру собери из исходников браузер (cromium или firefox), чтобы подправить в исходниках пару простых моментов.
И главное, если это твой первый язык, учить бы будешь не сам язык а собственно программирование.
С языком разберешься быстро (может даже недели а не месяцы), даже не так, в подавляющем большинстве случаев не требуется знать весь язык, есть некоторый синтаксический базис, да, он нужен (это как понимать зачем нужны отступы в питоне, или что такое преобразование типов в си), а есть огромное количество нюансов, которые нужно понимать чтобы не наступить на грабли для этого есть документация, ну и по ходу придется разобраться.
Невозможно подготовить тебя исключительно теоретически, и потом стать великим гуру на практике, как минимум нужна практика в процессе обучения, и вот уже от нее и твоих способностей к обучению и от образа мышления и будет зависеть, как долго нужно будет идти к цели, может и годами.
Как долго учить с++ ? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.
Закрыт 5 лет назад .
Наверное уже всех давно задолбал этот вопрос 😀 , но все-таки ребят сколько же нужно обучаться с++ чтобы уметь самому создавать небольшие проги . Я не говорю о огромных проектах, а просто для себя типа небольшая 2д игра. Я стараюсь все понимать, смотрю видеоуроки, примерно 2 — 5 штуки за неделю 😀 Опытные прогеры просветите меня и есть ли какие-нибудь советы новичку ?) (кстати я уже просмотрел уроков 30 и в целом понимаю как все устроено и умею пару вещей 🙂
Неудержался
Просто смотреть видеоуроки недостаточно. Основные усилия при изучении любого языка программирования должны быть направлены на практику. Вы должны как можно больше писать программ, иначе знания просто не закрепятся. Ставьте перед собой задачи и решайте их, со временем усложняя эти задачи. Только так вы сможете освоить C++ (или любой другой язык). И именно от количества практики зависит скорость вашего обучнеия.
И ещё. Я понимаю, что у каждого человека свои способы получения и усвоения новой информации, но я бы посоветовал перейти с видеоуроков на книги. Дейтела, например. Всё-таки книги по программированию, в отличие от видеоуроков, пишут (в основном) специалисты, информация в книгах проходит редактуру и содержит гораздо меньше ошибок, неточностей и недоговорок, чем видеоуроки, которые сейчас клепают все кому не лень.
Для «типа небольшой 2д игры» вообще не обязательно на чем-то уметь программировать. Есть такой движок, называется Construct 2. На нем можно делать «типа небольшие 2д игры». Знаю, звучит не очень вдохновляюще. Поэтому лучше просто загугли сразу про этот движок. Прочувствуешь всю его простоту по первому взгляду. Посмотри на ютубе пару видео о нем. Материала по нему предостаточно, в том числе на русском языке. И как бы оно плохо не звучало, вещь довольно прикольная. Не очень перспективная, но прикольная.
Если же у тебя все-таки где-то в глубине души есть желание делать большие и классные игры (2д/3д — не важно), а не только лишь «типа небольшие 2д игры» — тогда лучше всего подойдет C# и Unity.
Для сравнения. Пока ты будешь «вариться» во всем этом, то:
В случае с Construct 2:
Ты можешь неспешно что-то пытаться делать, изучать, что-то придумывать, и через пару-тройку месяцев родишь более-менее играбельное и готовое «нечто» (а не очень готовое, но хоть сколько-нибудь играбельное — можно хоть через пару дней). Если повезет с идеей, не подкачаешь с реализацией, то игру можно даже опубликовать и продавать. Но это скорее исключение, чем правило.
Из плюсов, относительно Unity:
- С ним очень просто и приятно работать, если ты не особо шаришь в программировании
- Не нужно уметь программировать ни на одном из языков (хотя эти знания будут очень кстати, потому что ты все равно в каком-то смысле будешь программировать различные действия и взаимодействия)
- Можно быстро делать разные небольшие 2д игры
Из минусов:
- У движка есть нехорошая особенность, которую в двух словах не объяснишь. Но при падениях FPS у игры, ты можешь столкнуться с тем, что некоторые объекты будут проходить сквозь друг друга (в частности это касается небольших объектов, с большими объектами все в порядке).
- Движок также мультиплатформенный, как и Unity, но для мобильных платформ он не подойдет, потому что оптимизация огорчает. Тут скорее даже не движок виноват, а то, что игра выходит на HTML5. Поэтому игра на многих даже очень хороших мобильных устройствах будет плохо идти. Исключение: какие-нибудь «point and click» квесты или другие игры, где не нужен хороший FPS. Десктопных игр это не особо касается, на них проблем с производительностью при текущих мощностях компьютеров нет.
- Если захочешь продавать игру, нужно приобрести лицензию (8000р с небольшим)
В случае с Unity и C#:
Ты можешь неспешно что-то пытаться делать, изучать, что-то придумывать, и через пару-тройку лет родишь более-менее играбельное и готовое «нечто» (а не готовое — через пару-тройку месяцев). Скорее всего такой продукт можно будет продавать.
Зачем и где учить С++ и насколько он актуален в 2022 году
В сегодняшнем материале попробуем разобраться с тем, насколько актуален С++ в 2022 году.
Стоит ли начинать изучать С++ в 2022 году?
C ++ — отличный язык для изучения, если вы программист, который хочет глубоко понять, как работают компьютеры. C ++ позволяет вам познакомиться с низкоуровневыми концепциями программирования и помогает понять, как компьютеры думают и работают. Другие языки и концепции программирования могут иметь для вас больше смысла после того, как вы изучите C ++.
Это чрезвычайно быстрый и эффективный язык. Многие инструменты и фреймворки полагаются на скорость и эффективность C ++. Сейчас он пользуется большим спросом, и он будет оставаться востребованным в 2022 году из-за своей надежности, производительности и эффективности.
Насколько сложно учить С++ с нуля?
C ++ известен как один из самых сложных языков программирования для изучения по сравнению с другими популярными языками, такими как Python и Java. C ++ сложно изучить из-за его многопарадигмальной природы и более продвинутого синтаксиса. Хотя известно, что это особенно сложно выучить новичкам, это также сложно для программистов, не имеющих опыта работы с языками низкого уровня. В то время как это делает занять больше времени, чтобы написать C ++ кода, язык был модернизирован до нынешних абстракций высокого уровня. Эти абстракции можно использовать для очень эффективного кодирования. Вы можете быстро писать код на C ++ 14, C ++ 17 и C ++ 20.
В то время как некоторые разработчики предлагают изучать C до C ++, другие утверждают, что если вы заинтересованы в работе с C ++ в своей карьере или в личных проектах, нет необходимости посвящать время изучению C (если, конечно, вы этого не хотите!). Если вы новичок в программировании, важно изучать компьютерное программирование независимо от языка. Есть много фундаментальных концепций, которые имеют решающее значение для разработки программного обеспечения в целом. Вы можете настроить себя на успех, сначала изучив эти основы, чтобы погрузиться в язык, чувствуя себя подготовленным и уверенным.
Положительные стороны С++
1.Универсальность. На С++ до сих пор пишут код для чего угодно. Робототехника, ядра ОС, драйвера, микроконтроллеры, приложения, нейросети и обработка статистики — все те сферы, что тесно связаны с С++
2.Скорость выполнения кода. С++ является одним из самых быстрых языков программирования.
3.Фундамент для многих языков программирования. С++ будет хоть и нелегким, но прекрасным фундаментом для начала обучения программированию, по той причине, что синтаксис многих языков, так или иначе, схож с синтаксисом C++
Отрицательные стороны С++
1.Сложный в понимании. На С++ необходимо детально описывать каждое действие, вследствие чего сходу понимать как работают большие и долгие проекты и принять в них участие у новичка не получится. Порог входа крайне высок.
2.Проблемы с управлением памятью. С++ даёт возможность довольно таки гибко управлять используемой оперативной памятью. Это всё необходимо для системного программирования, но по этой же причине всё это приводит к частым ошибкам новичков и может существенно усложнить приложение, написанное на С++.
Для чего изучать С++
Освоение C++ крайне необходимо в тех отраслях, что требуют производительности и надежности. Изучив данный язык вы попутно разберетесь в большинстве методик разработки и сопутствующих технологиях. Повторимся, С++ для новичка будет крайне тяжелым направлением, но изучив его и принявшись за изучение других языков, последние будут даваться уже намного легче.
Ну и самое главное, почему C++ — настоящий must-know для амбициозного программиста: работая с ним, ты ощущаешь, что куда больше создаёшь, чем используешь. Достаточно сложный синтаксис, тысячи строк кода даже в простых программах, механизмы работы с памятью и периферией — поначалу всё это жутко бесит из-за постоянных ошибок. Но потом приходит дисциплина, опыт и ты понимаешь, что C++ — это и есть настоящее программирование.
Карьерные перспективы
Разброс зарплат программистов С++ крайне велик. Но как и в любой сфере программирования, зависит от двух факторов, это опыт и результат собеседования.
Важность С и С++ для ИТ-индустрии переоценить невозможно. Если вы не планируете использовать эти языки в дальнейшем, они окажутся полезными для общего понимания всех концепций программирования, а если продолжить свой путь с ними, найти работу будет несложно.
Необходимо отметить также одну отличительную черту. В случае, если вам импонирует GameDev( создание игр), то С++ будет вашим отличным помощником и инструментов для старта в данной сфере в роли разработчика. Путь будет нелегким, но тут уже вопрос того, насколько вы желаете работать в данной сфере.
Источники изучения С++
№1. Основы программирования на языке C и С++ для начинающих — cppstudio.com
№2. Основы программирования на С++ для начинающих — purecodecpp.com
№3. С++ projects for beginners — список проектов для начинающих программистов — github.com/suzana-ilic/cpp
№5. «Программирование на С++ в примерах и задачах»
Книга содержит полный набор сведений о языке С++, необходимых для успешного написания кода. Материал излагается последовательно и дополняется большим количеством примеров, практических задач и детальным разбором их решений.
№6. «Язык программирования С++. Базовый курс»
Подробное введение в C++, которое детально покрывает буквально все аспекты языка в доступном формате
Подводим итог.
Важность С и С++ для ИТ-индустрии переоценить невозможно. Если вы не планируете использовать эти языки в дальнейшем, они окажутся полезными для общего понимания всех концепций программирования, а если продолжить свой путь с ними, найти работу будет несложно.
Если вас интересует IT его перспективы в РФ ,
публикую также свои статьи и интервью на канале t.me/it_begin
Подписывайтесь, если будет интересно 😉
Вот даже воздержусь от комментария про описание из алиэкспресс.
В списке литературы не увидел Страуструпа, как без него учить С++?
Ответ на твой вопрос могут дать разработчики блендера, она как раз недавно об этом задумывались.
«На несколько порядков повышена скорость экспорта файлов в форматах .obj и .fbx, благодаря использованию многопоточности, оптимизации алгоритмов и переписыванию кода для экспорта с Python на C++. Например, если раньше экспорт большого проекта в файл Fbx занимал 20 минут, то теперь время экспорта удалось сократить до 20 секунд.»
Нож мне в печень — с++ вечен.
Язык программирования отличный, изложение и подача материала — полное г
Знакомо?
Разве стало лучше?
А ты не зациклен?
Топ 10 ресурсов на русском языке, которые могут помочь в изучении Python
Вот список из 10 ресурсов на русском языке, которые могут помочь в изучении Python:
1. Python.org на русском языке – официальный сайт языка Python, который содержит множество документации, руководств, обучающих материалов и примеров.
2. ‘A Byte of Python’ на русском языке – это онлайн-учебник, который предназначен для начинающих программистов и помогает освоить основы языка Python.
3. Pythontutor.ru – это онлайн-платформа с интерактивными задачами и упражнениями, которые помогают закрепить теоретические знания.
4. Rus-linux.net – это портал, который содержит множество статей и обучающих материалов по Python.
5. Learnpython.ru – это онлайн-курс, который предоставляет пошаговый и практический подход к изучению языка Python.
6. Pythonworld.ru – это онлайн-учебник по Python, который содержит подробные описания синтаксиса языка, примеры и задачи для решения.
7. Pythonicway.com – это сайт, который содержит множество статей, видеоуроков и других материалов, которые помогают в изучении Python.
8. Coursera.org – на этой платформе можно найти большое количество курсов по Python от ведущих университетов и экспертов в области программирования.
9. Geekbrains.ru – это онлайн-платформа, которая содержит множество курсов по Python и другим языкам программирования.
10. Tproger.ru – это портал о технологиях и программировании, где можно найти множество материалов о Python и других языках программирования.
Как я хотел облегчить работу в поликлинике
Многие, кто на меня подписан, знают, что я отработал некоторое время на скорой, и по настоящий день работаю в первичном звене (В поликлинике).
Я застал самые крутые волны ковида и вынес много опыта из этого шторма.
Самый главный- «Спасение утопающих — дело рук самих утопающих» — это я сейчас про врачей, хотя и про пациентов такое можно было сказать зачастую.
Но сейчас как раз о «Пятничном МОЁ». Захотелось ачивку и заодно рассказать вам о моем опыте, улучшения работы в поликлинике. А именно журнале вызовов — который у нас пишется по сей день в бумажном варианте.
Вызовов — переваливает за 300, и самая большая боль вначале рабочего дня: выбрать вызовы по своему району(ведь в журнале они в разном порядке), переписать в блокнотик, расставить маршрут.
И да, опытные врачи перепишут и пойдут по памяти, но согласитесь порой можно упустить или забыть маршрут, можно перепутать дома, такое часто встречается даже у тех, кто знает весь район по закоулочкам. А еще наверняка будет удобнее, если врач не будет тратить лишние 5 минут (во время ковида примерно 20, потому что вызовов очень дофига).
В один из прекрасных дней я сам заболеваю ковидом в легкой форме, и сижу дома, сидеть без дела не могу — поэтому придумываю, как бы облегчить работу — хитрый лис, который не хочет работать — скажите вы? -нет, просто реально даже за те деньги, что нам платили, работать было тяжело, а так можно было бы и большему количеству человек помочь.
Я сажу за компьютер и понимаю, что я не программист, хоть и навыками верстки я обладаю, но сделать что-то можно, вспоминаю все конструкторы, что есть: тильда, юкоз -понимаю, что не подходят, ищу информацию о «ноль-код платформах» — нет, я не рекламирую их, просто рассказываю, как замахнулся на MVP, а по факту мог получить готовый продукт..
Нахожу одну такую прекрасную платформу — название которой не скажу, чтобы не убили за рекламу. И начинаю что-то воять.
Цель которая передо мной стояла изначально:
Сбор адресов в удобном для всех приложении (изначальный вариант был плох, потому как врач так же должен был переписывать вызовы себе в телефон).
Пометки о вызовах (комментарии, к чему готовится)
Заключение, заметки для себя(что было на вызове, что в итоге решил и нужен ли больничный).
Что получилось в итоге:
Все что планировал
+возможность добавление вызовов регистратором из колл-центра, сразу с пк, которые стоят у них на месте.
+Возможность просмотра врачом истории своих вызовов и информации которую он заполнил на них для себя с любого пк
То есть в конце-концов, выстроилась прекрасная цепочка:
Колл-центр записывает вызов сразу в БД, адресуя его нужному врачу, который ходит по этой территории ->
вызов падает врачу в приложении\сайте (потому что загружать приложение в сторы мне не хватило времени, и я разочаровался в проекте)->
Врач сразу видит вызов и комментарий о нем, соответственно не тратит время на переписывание инфы + не тратит время на заход в колл-центр, а значит исключает личный контакт (во время ковида было очень кстати полезно).
К тому же врач вначале работы может сразу пойти на вызовы, а не заходить в поликлинику.
Если по пути работы врача вызовы добавляются, то они падают в «Колокольчик» — уведомления, либо через @mail (потому что я так и не разобрался, как настроить уведомления в браузероной версии), + встраиваются в очередь по маршруту.
Самое интересное, сейчас открыл проект- я умудрился наладить маршрут и очередность вызовов с помощью карт и какого-то скрипта написанного моим другом.
Проект все еще жив в моей-тестовой версии, но воспользоваться не могу, потому что сервис зарубежный и оплатить его не выходит.
Логика приложения для врача:
Тут уже и замашка на карту пациента — аналог создания своей МИС — Медицинская информационная система (нет этой цели у меня не было).
Но — удобная работа с вызовами, их количеством, вызов содержит в себе пациентов, которых либо добавляет регистратор колл центра, либо сам врач. Если врачу на вызове попались еще пациенты, на которых не вызывали, врач может самостоятельно их добавить. (так сказать попутные пациенты в квартире).
Ранжирование вызовов по их удаленности. (По тяжести не думал тогда делать, в основном тогда обслуживали- как удобнее).
Открытие карты в отдельном окне, открытие маршрута в гугл-картах, в основном это пеший маршрут, самый оптимальный по расстоянию. Сделал только возможность начала обхода с самой дальней точки района, так как делать работу принято было с конца.
Создание информации о пациенте — различные данные.
Логика приложения для регистратора:
Тут сложного ничего- залогинился (Логины и пароли выдавал бы админ-я).
Заходишь в журнал всех вызовов. Сверху справа есть кнопка добавления вызова, вписываешь инфу — пока говоришь по телефону и отсылаешь врачу.
Логика приложения для просмотра своих заметок и вызовов:
Тут еще проще — просто заходишь под логином, открываешь любой вызов и смотришь — где ты был, когда, как и что записал для себя. Легко и удобно, открыл это приложение и открыл свою МИС на работе Crtl+c Ctrl+v, и готово, сократил еще кучу времени на вбивание инфы. (Да во всех МИС есть шаблоны, но тут то еще быстрее находить пациента и объективно вписывать или жалобы).
По факту, когда врач приходил с вызова, у него все уже было в печатном виде -оставалось перенести это МИС.
Почему я не полез с этим куда-то дальше?
Потому что у видел, что в других городах это реализовано + реализовано вместе с той МИС на которой работают. Не хотел изобретать велосипед
Потому что не хватало знаний в разработке.
Потому что у МИС с которой мы работаем такое в планах уже 3 или 4 года, но я никак не вижу, или может оно есть, но наше руководство это не закупает.
Потому что к апи той МИС с которой мы работаем никто не дал бы доступ.
Почему я не стал оставлять это локально для себя и коллег?
Первый вопрос что меня мучал — защита данных, какой она будет, ведь это MVP и все на базе ноу-код платформы, а значит хз, что и как там защищено.
Знаю, что в других городах уже реализовано подобное и реализовано лучше и намного лучше, у знакомых врачей из определенных поликлиник в Москве даже выдают планшеты на работе с необходимым софтом, но у нас этого нет, мы привязаны к МИС с которой постоянно какие-то проблемы, возможно не с ней с самой, а с серверами на которых она располагается. Хотя оптимизация для «Астра-линукс» там ужасная, замечаем, как этаже МИС отлично работает на винде.
Но скажу честно мы тестировали данную «Разработку» — некоторое время, и действительно всем все зашло. Кроме старой школы.
Идей для разработки было много и улучшения, но куда ее предлагать я не знал, да и клинки или компании лучше закажут для себя что-то сами. Но если вам интересна еще одна моя «Разработка в ковид, с радостью расскажу».
Если что-то забыл напишу в комментах, а если вам интересно — спрашивайте
Спортзал, который ты никогда не покинешь
А никто не говорил, что будет легко
Настоящий программист никогда не ставит комментариев. То, что писалось с трудом, должно пониматься с трудом.
Нейронки на все случаи жизни
Для учёбы, монтажа, кодинга, дизайна, работы со звуком, улучшения фото и даже для устройства на работу — сохраняйте эту эпичную подборку себе.
MathGPT — подсобит с матаном.
editGPT — исправит ошибки в тексте на английском.
Consensus — огромная научная база знаний на основе ИИ.
ExamCram — превратит сложные учебные материалы в карточки и тесты для самопроверки.
Yip — то же самое, но в вебе и с поддержкой Википедии.
YouTube Summary with ChatGPT — превратит любое обучающее видео или лекцию в текст.
ChatBA — поможет сделать презентацию.
Explain Me Like I’m Five — объяснит заумные вещи простым языком.
Для программистов
Adrenaline — исправит ошибки в коде.
Tabnine — допишет код за вас.
CodePal — напишет код, исправит баги и выдаст ревью.
Code GPT — плагин-генератор кода для VSCode.
Autobackend — поможет с бэкендом.
Codesnippets — генерит код из текстовых запросов, подходит для команд.
Buildt AI — поисковик для VSCode, найдет готовый код в инете.
Для дизайнеров
Booth ai — генерирует стоковые фото по текстовому запросу.
AdCreative — генерит баннеры и другие рекламные креативы.
RoomGPT — сделает ремонт в вашей комнате с любым дизайном.
Hama — Удаляет лишнее с картинки.
Для улучшения фото
Photoroom — меняйте фон, вырезайте объекты в пару движений. Есть мобильные версии.
Nostalgia Photo — сделает старые фото чётче.
Pallete fm — раскрасит чёрно-белые фото.
Relight — поможе заново выставить свет на уже сделанном фото.
Picsart — заменит ваших бывших на собаку, флаг или батон.
LeiaPix — сделает из 2D-фотки 3D.
Для создания видео
Сolourlab AI — ИИ поможет с цветокором.
Luma AI — выдаст 3D-сцену киношного качества из нескольких фоток.
Kaiber — с этой штукой делали свежий клип Linkin Park.
Topaz Video AI — апнет видос до 4К и 60 FPS, уберёт тряску.
SpiritMe — создаст вашу говорящую цифровую копию.
CapCut — поменяет фон, переведет речь в сабы и многое другое. Прямо в браузере.
vidyo ai — быстро нарежете длинные видосы в шортсы,
Для работы со звуком
Fadr — порежет трек на отдельные дорожки инструментов и вокала.
Adobe Enhance — чистит запись от шумов. Бесплатно.
Elevenlabs — мощнейший синтезатор, подделает любой голос.
Beatoven — ИИ-композитор музыки для видео.
Clip audio — подберет музыку для любого видоса.
The MetaVoice — меняйте свой голос на один из восьми пресетов.
Cleanvoice — уберет из вашей разговорной записи мусор,
Для устройства на работу
kickresume — напишет резюме и сопроводительное.
Сover Letter AI — составит сопроводительное на основе резюме.
InterviewGPT AI — имитирует собеседование и помогает готовиться.
Resume Worded — прокачает резюме и профиль на LinkedIn.
Interview Warmup — разогреет перед собеседованием.
Для прокачки поиска в интернете
Lexii ai — чат-бот, которые отвечает за слова и прикладывает ссылки на источники.
Perplexity — мощнейший ИИ-поиск, работает и как расширение для браузера.
Chord — выдаст подробнейший реферат в ответ на ваш запрос.
Phind — поисковик для технарей, умеет в код.
Nuclia — найдет что угодно на сервере, накопителе и облачном диске.
Для развлечений
Natural Language Playlist — 7-часовой музыкальный плейлист по любому запросу.
Movie Deep Search — подыщет фильм под любой запрос.
RadioGPT — ИИ-диджеи ведут эфиры.
EndlessVN — у всех визуальных новелл есть финал. Кроме этой.
Tattoos AI — генерирует эскизы для тату.
Hello History — даст пообщаться с ИИ-двойником известной исторической личности.
Cool Gift Ideas — опишите человека и сервис подберёт под него подарок.
Endel — генератор ИИ-музыки, поможет расслабиться и выспаться.
PlaylistAI — соберет плейлист в Apple и Spotify по тексту или картинке.
SSD технологии древних: DiskOnChip
Автор: dlinyj
Оригинальный материал
Дополнительные фото, ссылки, а также информация по DiskOnChip в источнике материала. Всё попросту не влезло 🙁
В середине 1990-х, FLASH-накопители были очень дорогими, поэтому появление твердотельных накопителей сильно задерживалось. Стоимость 1 МБ FLASH-памяти была несоизмеримо дорога в сравнении со стоимостью 1 МБ памяти на физическом жёстком диске, с блинами.
Но, несмотря на это, в 1995 году — израильская компания M-Systems представила первый полупроводниковый накопитель. Это был настоящий жёсткий «диск», который выглядел как обычная 32-х контактная DIP-микросхема. Более того, он устанавливался вместо микросхемы расширения BIOS, при этом имел на борту ёмкость в десятки, а то и сотни мегабайт. В те годы — это было просто космические технологии, и в последствии они встречались и использовались достаточно часто, но уже в промышленном секторе.
Это система DiskOnChip – фактически полноценный жёсткий диск на одной маленькой микросхеме, с минимальной обвязкой, которая для своей работы потребует всего два чипа логики.
Ну что же, попробуем собрать свою необычную систему с этим жёстким «диском», проверю, может ли она работать с обычной ROM-памятью, запущу наконец свой BIOS на 386 машине с ISA-картой, чего не удалось в прошлый раз.
❯ Что же такое DiskOnChip®?
DiskOnChip (далее – DOC) – это фактически продолжение идеи расширения BIOS, о котором я достаточно подробно писал в статье «Пишем свой ROM BIOS».
DOC представляет собой обычную DIP-микросхему и вставляется в ту же панельку, что EEPROM, как на сетевой карте, живёт по тем же адресам и даже в начале содержит код BIOS инициализации. И микросхема pin-to-pin совместима с некоторыми микросхемами ПЗУ! Однако далее, в старших адресах этой микросхемы, содержатся регистры управления, которые переключают окна FLASH-памяти.
Для сравнения можно посмотреть расположение выводов DiskOnChip 2000 и микросхемы EEPROM SST 29EE512 (64К x 8). Отличие только в количестве адресных линий, потому что DOC работает через окно в 8К х 8 (как восьмикилобайтная EEPROM).
Сравнение распиновки EEPROM и DOC
Фактически электрический интерфейс работы с DiskOnChip ничем не отличается от интерфейса работы с обычной EEPROM. Сигнальные линии называются также, и она совместима с ними по ногам.
Структурная схема DOC
DiskOnChip занимает 8 КБ памяти. При этом — во время старта, она выглядит как обычная ROM BIOS, и инициализирует код для работы в реальном режиме, добавляя в прерывание BIOS 13h ПО для работы по этому интерфейсу.
При работе в реальном режиме, когда передаётся код управления BIOS в его внутреннюю EEPROM, он подменяет прерывание 13h по работе с диском. Таким образом, он начинает мапить в старшие адреса по очереди страницы флэш-памяти, с помощью регистров управления.
Карта памяти DiskOnChip 2000
Если рассмотреть карту памяти, которая доступна системе в пространстве 8 КБ, то мы увидим что оно состоит из четырёх разделов по 2 КБ.
Секция 0: Загрузочный блок. Этот раздел содержит данные, которые выполняются при загрузке BIOS.
Секция 1: Загрузочный блок 2. Содержит вторую часть загрузочной области.
Секция 2: Регистры управления. Используется для управления поведением DiskOnChip 2000 и флэш-носителя.
Секция 3: Окно доступа к FLASH-накопителю. Окно, чрез которую видно область FLASH для записи или чтения данных.
Как можно понять, вся доступная память, в моём случае 8 МБ, доступна через маленькое окно в 2 КБ и переключается с помощью регистров управления.
В более сложных системах, которые работают уже в защищённом режиме, таких как Windows CE, Windows 2000, QNX, Linux и т. д., где недоступен код инициализации и прерывание 13h, для работы требуются специализированные драйвера файловой системы DOC, называемой TrueFFS.
Подводя итог, можно сказать, что DiskOnChip – это примитивный SSD того времени, который успешно применялся во многих встраиваемых системах. Чаще всего его можно было встретить в одноплатных компьютерах, в кассах, тонких клиентах и другом аналогичном оборудовании. Вот, например, недавно через мои руки прошёл моноблок для ресторанов Micros WS4. Как я понял, он использовался официантами для приёма заказа.
Внешний вид моноблока
И после вскрытия внутри можно обнаружить микросхему DiskOnChip, несмотря на то, что он работает под управлением операционной системы Windows CE.
Микросхема DiskOnChip
Самое приятное, что из-за простоты устройства DOC для его подключения к компьютеру не требуется использовать каких-либо контроллеров жёстких дисков, от них можно вообще отказаться! Схема подключения содержит всего две микросхемы логики.
Кстати, если вас пугают импортные микросхемы 74-й серии, то, во-первых, их можно взять с другими буквенными индексами, а во-вторых, вполне можно заменить на отечественные аналоги, например:
74-серияаналог74139155ид1474138155ид7
А ещё их можно заменить на микросхемы серии к155, к555, кр1564 и всё будет прекрасно работать.
Схема простая, значит можно попробовать запустить его на любом старом железе!
❯ Ваяю плату расширения
Много лет хочу сделать плату расширения для шины ISA. Ещё со студенческой скамьи вынашивал идеи, прикидывал дешифраторы адреса для создания своей платы расширения. Даже как-то пытался паять параллельный порт на микросхеме КР580ВВ55. Но всё это было не торт, и толком не работало.
Здесь другое дело, схема простая, всего три микросхемы, как работает – понятно. Осталось дело за малым – это всё реализовать. Мне было лениво заниматься разводкой печатной платы, поэтому решил делать всё на макетке. В качестве основы платы взял проект IBM PC XT8-bit ISA Prototype PCB Card XL.
В Китае заказал изготовления платы, микросхему DOC на 8 МБ и уже здесь нашёл подходящие микросхемы логики: 74HC138AP и 74HC139AP (обратите внимание, что буквенные индексы иные). Самое тяжёлое – это было томительное ожидание, когда изготовят платы и их отправят. Спустя несколько месяцев у меня всё было на руках.
Всё готово к сборке
После того как я всё получил, распечатал схему и даташиты на микросхемы с распиновкой. Для удобства сразу нарисовал, что и куда должно идти. Что удобно, на макетке подписаны все сигналы, и ошибиться просто невозможно.
Набросок схемы
Далее предстоит кружок кройки и шитья, и покуда я собирал всё это хозяйство, десять раз пожалел, что не развёл плату сразу. Потому что убил просто громадное количество времени на все эти проводочки.
Кружок кройки и шитья
Спустя неделю вечеров пайки получил-таки готовый результат.
Вид спереди
Далее предстоит самое интересное – тестирование!
❯ Проверка работоспособности DiskOnChip
Проверку проводил на материнских платах с процессорами 386SX и Pentium 1. Как обычно бывает, где-то был неконтакт или непропай. После исправления мелких недочётов система сразу подхватила BIOS из DOC, и я увидел при загрузке ключевое сообщение, о том, что TrueFFS-BIOS запустился.
Если загрузиться вместе с жёстким диском, то можно увидеть второй диск D:, который можно отформатировать в системный раздел и перенести на него файлы, что я и сделал. Забегая вперёд, скажу, что форматировать стандартным format d: /s нельзя! То есть если очень хочется, то можно, но результат непредсказуем.
Намного более правильно работать с этим «диском» с помощью его родных утилит, которые корректно работают с TrueFFS. После того как я отформатировал диск родными утилитами, можно было перенести систему, отсоединить плату контроллера дисков и оставить только видеокарту и мою самодельную платку.
Удивительно, но это работает!
Ничего лишнего: только материнская плата, видеокарта и DOC
Самое забавное, что при загрузке BIOS не видит никаких подключённых носителей: ни флоппи, ни жёстких дисков. Но несмотря на это, всё равно идёт загрузка DOS. Лучше всего посмотреть на видео.
❯ Не всё так гладко с этим DOC…
На самом деле, не всё так гладко. То ли мне не повезло с микросхемой, то ли какая-то другая проблема, но DOC глючил. Он не всегда успешно загружался на моей плате, так и на железе, которое умеет работать с DOC из коробки (имеет аппаратную и программную поддержку в системном BIOS). То есть выглядело так, BIOS TrueFFS стартует, но диска при загрузке не видит. После перезагрузки стартует нормально, потом снова не видит. С чем связано – непонятно.
В какой-то момент при загрузке начались артефакты с запуском программ, а при переходе в папку увидел такое:
Так выглядит смерть жёсткого диска
И после этого загружаться он отказался. Спасло только форматирование его штатными утилитами. Что это было – я не знаю. Сетую на то, что у меня одна из первых версий микросхем, возможно, она немного сырая.
❯ Замена DiskOnChip на EEPROM
Hо перед нами прогресс открывал все пути,
И, бросив старых друзей ради новых ХТ,
Мы выжимали, что можно, из DOS и из архитектуры,
Меняли коды команд, трассировали INT’ы
Дизассемблировали BIOS и писали в порты
То, что я б не позволил печатать на месте цензуры.
Мне всё же хотелось продемонстрировать, что вместо DOC можно поставить обычную ROM микросхему, и это решение будет работать. В результате это вылилось в столь громадный квест, что потянет на ещё одну статью, а то и не одну. Там пришлось дизассемблировать основной BIOS, была попытка запустить его в qemu и много других забавных экспериментов. Но всё же, оставлю это всё самое интересное за кадром, и расскажу суть.
В качестве микросхемы ПЗУ взял EEPROM SST 29EE512 просто потому, что она у меня была под рукой, и была pin-to-pin совместима с DOC. Внимательный читатель заметит (хотя уверен, что таких нет), что это та же самая микросхема, которую я использовал в статье «Пишем свой ROM BIOS». Для корректной работы 64КБ ROM в области памяти 8 КБ, нужно посадить неиспользуемые старшие адреса на землю. То есть, фактически мы превращаем микросхему в 8 килобайтную EEPROM.
В процессе экспериментом выяснилось, что БИОС на материнской плате пытается писать в EEPROM, и, таким образом, портит её содержимое. Для того чтобы этого не происходило, доработал переходник, удалив контакт с сигналом разрешения записи WE.
Больше переходников, богу переходников!
Изначально планировал попробовать точно также запустить BASIC-ROM, но как я не бился, так и не смог его стартануть. То есть, видно, что происходит успешная инициализация, системный BIOS «зависает» без ошибок, значит переход на код ПЗУ состоялся, о чём также свидетельствовали POST-коды. Но ничего больше не происходило. В отчаянной попытке я начал искать JTAG-отладчики для 386 архитектуры, пытался запустить BIOS материнской платы в qemu, но всё тщетно. Идей, как отлаживать подобные BIOS у меня пока нет. Хотя задача, крайне интересная, как же заниматься отладкой различных расширений BIOS.
Обращаю внимание, что в qemu c SeaBIOS и на другой материнской плате, с EPROM на PCI-карте всё прекрасно работало.
Установленная микросхема ПЗУ, вместо DOC
В конце концов, я не нашёл выхода из этой ситуации, поэтому решил идти по более простому пути и запустить ROM HELLO. К слову сказать, в том коде я тоже обнаружил ошибку.
Как оказалось, после того как я посчитал контрольную сумму, оставшиеся байты надо было сделать равными нулю. Чтобы в результате общая сумма давала нуль. И мне сильно повезло, что на PCI тогда этот код завёлся. Вообще, то что на PCI плате это работало – чудо, потому что потом я внимательно прочитал стандарты, он не должен был работать никак. Исправление этой ошибки запуску BASIC не поспособствовали.
В результате всех мытарств, которые по времени заняли больший и наиболее сложный промежуток, чем эксперименты с DOC, мне удалось на этой же плате стартануть мой самописный BIOS.
Успешный запуск на материнской плате Pentium
Это, конечно, очень интересное колхозничество, но что насчёт промышленных железок, будет ли оно работать и там?
❯ Тест на железе с панелькой под DOC
Всё это забавно и хорошо, хочется попробовать запустить реальное железо, которое имеет поддержку DiskOnChip прямо из коробки. Специально для этого прикупил себе старинный тонкий клиент Light System LG8101, внутри которого есть панелька для DOC.
Внешний вид тонкого клиента
Если вскрыть эту штуку, то внутри можно обнаружить CF, с которой идёт загрузка, и панельку под DiskOnChip. В неё можно и проинсталлировать нашу замечательную микросхему.
Эта железка имеет поддержку DOC на уровне BIOS, так что запуск TrueFFS-BIOS не требуется. Обратная сторона этой поддержки в том, что сюда не получится вставить свою ROM-память, эта панелька предназначена только для микросхемы DiskOnChip (да, я попробовал вставить туда свою ROM, но ничего не произошло).
Выбираем в BIOS загрузку с DOC
После всех манипуляций система будет успешно загружена с этой микросхемы, будто бы там установлен обычный жёсткий диск.
Успешная загрузка тонкого клиента с установленной микросхемы DiskOnChip
❯ Заключение
Удивительно, но многие из вас не знают, что первые SSD-накопители появились аж в 1995 году, и даже вполне себе успешно применялись и использовались. Их высокая стоимость и малая ёмкость привели к тому, что рядовые пользователи не могли встретить их в своих ПК. Однако нашли широкое применение во встраиваемых системах, либо там, где не требуется частая запись на диск, как, например, тонкий клиент. Их могли использовать также в игровых автоматах или станках.
Условный игровой автомат на DiskOnChip
Тем не менее широкого распространения они так и не получили. Впоследствии дешевизна и расширение рынка CompactFlash свели на нет эту перспективную разработку. К её недостаткам также следует отнести, что она довольно медленная, так как работа идёт через маленькое окно в 2 КБ.
❯ Полезные ссылки:
❯ Благодарности:
Выражаю большую благодарность MaFrance351 в поддержке с этим проектом. Он раньше меня разобрался с DOC, и помогал потом мне советами и ссылками. Как минимум половину ссылок в этой статье получил от него.
P.S. Поскольку в рамках одной статьи невозможно рассказать обо всех тонкостях, то некоторые заметки на полях буду публиковать у себя в телеграмме.
Подпишись на наш блог, чтобы не пропустить новые интересные посты!
Топ 10 бесплатных сайтов по программированию
Программирование становится все более востребованным навыком в современном мире, и все больше людей стремятся научиться кодированию. Однако, не все готовы потратить деньги на покупку дорогостоящих учебных материалов или курсов. Счастливо, существует множество бесплатных ресурсов, которые помогут вам освоить программирование без лишних затрат. В этой статье мы рассмотрим топ 10 бесплатных сайтов по программированию, которые помогут вам начать свой путь в мире кодирования.
Codecademy (https://www.codecademy.com/)
Codecademy — один из наиболее популярных сайтов по программированию. Он предлагает широкий выбор курсов, которые охватывают различные языки программирования, включая Python, JavaScript, Ruby, HTML, CSS и многие другие. Все курсы Codecademy бесплатны, но для получения доступа к некоторым дополнительным возможностям сайта требуется платная подписка.
Coursera (https://www.coursera.org/)
Coursera — это образовательная платформа, которая предлагает бесплатные курсы по программированию, разработке веб-сайтов, анализу данных и многому другому. Среди доступных языков программирования на Coursera можно найти Python, Java, C++, JavaScript и многие другие. Курсы на Coursera разработаны университетами и компаниями по всему миру.
edX (https://www.edx.org/)
edX — это еще одна образовательная платформа, которая предлагает бесплатные онлайн-курсы по программированию и другим темам. Курсы на edX предоставляются ведущими университетами, включая MIT, Harvard и Berkeley. Среди языков программирования, которые можно изучить на edX, находятся Python, Java, C#, JavaScript и многие другие.
FreeCodeCamp (https://www.freecodecamp.org/)
FreeCodeCamp — это некоммерческая организация, которая предоставляет бесплатные курсы по программированию и разработке веб-сайтов. Она известна своим курсом по полному стеку веб-разработки, который включает HTML, CSS, JavaScript, Node.js и другие технологии.
W3Schools (https://www.w3schools.com/)
W3Schools — это сайт, который предоставляет обучение веб-технологиям, таким как HTML, CSS, JavaScript, SQL и многие другие. Этот сайт является очень популярным среди начинающих веб-разработчиков, так как он предлагает краткие и понятные уроки, а также многочисленные примеры кода.
Khan Academy (https://www.khanacademy.org/)
Khan Academy — это некоммерческая организация, которая предоставляет бесплатные образовательные ресурсы для учащихся всех возрастов. Она предлагает бесплатные курсы по программированию, включая JavaScript, HTML/CSS, SQL и многие другие. Khan Academy известна своими понятными и доступными уроками, которые могут быть использованы как начинающими, так и продвинутыми учащимися.
Mozilla Developer Network (https://developer.mozilla.org/)
Mozilla Developer Network (MDN) — это сайт, который предоставляет бесплатные ресурсы для разработчиков веб-сайтов. MDN предлагает обширную документацию по HTML, CSS, JavaScript и другим веб-технологиям, а также множество уроков и примеров кода.
Udacity (https://www.udacity.com/)
Udacity — это образовательная платформа, которая предоставляет бесплатные и платные курсы по программированию и другим техническим темам. Udacity сотрудничает с компаниями, такими как Google, Facebook и Amazon, чтобы создавать курсы, которые соответствуют современным требованиям рынка. Среди языков программирования, которые можно изучить на Udacity, находятся Python, Java, JavaScript и многие другие.
GitHub (https://github.com/)
GitHub — это онлайн-хранилище, которое используется разработчиками для хранения и совместной работы над проектами. На GitHub вы можете найти множество бесплатных проектов с открытым исходным кодом, а также участвовать в совместных проектах с другими разработчиками.
Stack Overflow (https://stackoverflow.com/)
Stack Overflow — это сайт, который предоставляет ответы на технические вопросы, связанные с программированием и другими техническими темами. Стек переполнение является очень полезным ресурсом для начинающих программистов, так как он содержит ответы на множество вопросов, которые могут возникнуть в процессе изучения программирования.
Большая подборка книг по программированию у нас в телеграме, подписывайся!
Свежий Android на 9 летнем железе: Сможет ли смартфон 2016 года оставаться актуальным в 2023 с кастомной прошивкой?
Ребята из Google проделали огромную работу по популяризации Android на массовом рынке и поспособствовали появлению смартфонов в самых разных ценовых сегментах. Ведь разработка своей мобильной ОС — это многомиллионные вложения, плюс серьёзные проблемы совместимости (вспоминаем нулевые и подбор асек и игр под экраны/платформы). Однако годы идут и несмотря на довольно долгую поддержку предыдущих версий Android, со временем даже флагманы умудряются устаревать, чего уж говорить о девайсах среднего сегмента. В качестве подопытного, у нас выступит бюджетный смартфон Samsung Galaxy J5 на Android 6 Marshmallow. Сегодня мы с вами: немного вспомним историю моддинга девайсов, накатим кастом без сервисов Google и узнаем, способен ли смартфон с железом 9 летней давности стать устройством на каждый день. Интересно? Тогда добро пожаловать под кат!
❯ Предисловие
Многие мои читатели помнят период рассвета Android смартфонов, а именно 2010-2011 год. Открытость ОС от Google, а также лёгкость разблокировки загрузчиков мотивировала энтузиастов активно модифицировать свои девайсы. Android уже к версии 2.1 была достаточно удобной и приятной системой, особенно вкупе с интерфейсными фишками от лидеров рынка: HTC, Samsung, LG. Однако, голодному до приключений пользователю всего этого было мало!
Android смартфоны практически нереально было полностью «окирпичить» (исключение — чипсеты Tegra, на которых не сразу научились бэкапить зашифрованные разделы) и пользователи делали самые разные модификации. Причём касались они как части ядра и хардварного моддинга: модификация драйвера cpufreq (разгон чипсета), компиляция ядра с поддержкой swap (увеличение доступной ОЗУ за счёт ПЗУ), «горячее» переключение governer’ов (набор правил, определяющий как Linux будет распоряжаться ресурсами системы в разных ситуациях). Так и по части UI: нельзя сказать, что увидеть интерфейс Samsung TouchWiz на HTC было редкостью. Ну или HTC Sense на мотороле или интерфейс а-ля iOS 5! На очень многих девайсах стояла только-только набирающая обороты, но уже завоевавшая сердца владельцев мощных девайсов MIUI:
MIUI 2.3. Что-то она мне напоминает, но вот что. =)
Темы на профильных форумах набирали сотни страниц, а разделы с кастомными прошивками на девайсы иногда делились на отдельные темы. Только в топике о Galaxy S2 на 4pda были отдельные темы с прошивками, основанными на 2.3, на 4.0, на Ubuntu Touch и отдельная тема с украшательствами. Новички приходили, читали FAQ (или не читали) и спрашивали более опытных юзеров, которые уже создавали т.н «кухни» — название, пришедшее к нам со времен коммуникаторов на Windows Mobile! Кухни — сборная солянка из программ, необходимая для разборки прошивки и образов системы, дальнейшей модификации и запаковки. Таким образом, стало возможно изменять рамдиск, сделать автозагрузку каких-то сервисов или программ или даже грузиться с SD-карты.
В какой-то момент, некоторые люди для себя выделили главного врага всех тормозов Android — сервисы Google. С годами они заметно «разжирались», а многие программы требовали их для биллинга/показа таргетированной рекламы/API карт и т. д. Жирели они с каждым годом, отъедая не только драгоценную на то время внутреннюю память, но и продолжая работать в фоне со своими сервисами и занимая ресурсы.
В какой-то момент дошло до того, что с флагманского смартфона 2013 года, в 2017-2018 году уже было проблематично зайти в Google Play: всё начинало откровенно тормозить, пока обновлялись сервисы и сам Google Play. После завершения всех операций и скачивания обновлений, ситуация оставалась прежней. Два года назад, Google отключила какую-либо поддержку сервисов Google на Android 2.3, но и с минимально поддерживаемых 4.0-4.1 пользоваться ими очень проблематично. Например, iPhone 5s на своей последней iOS 12 пока что относительно хорошо себя чувствует в AppStore, а устройства от BlackBerry так вообще летали, пока у них магазин был доступен!
К развитию использования Android без сервисов Google поддали «газку» санкции США в сторону Huawei: ребята не отчаялись и сделали свою инфраструктуру, а популярность 4х-5и летних «хуавеев» на вторичке только доказывает, что всё у них получилось хорошо!
Данным образом и получились таким проекты, как microG — миниатюрная замена API сервисов Google, достаточной для запуска YouTube и других необходимых приложений.
К сожалению, я заметил тенденцию, что люди больше стали «потребителями» девайсов, не стремясь продлить им жизнь. Хотя такая возможность обычно есть и любимый девайс может ещё отлично послужить если не моим читателям, то их детям или родителям. При том, что во многих случаях потребуется не более часа времени.
Сегодняшним героем станет «народный» смартфон от Samsung 2016-2017 года — Galaxy J5 2016! Это довольно неплохой девайс, работающий на 4х ядерном чипсете девятилетней выдержки — Qualcomm Snapdragon 410, с графическим ускорителем Adreno 305, 2гб ОЗУ, 16гб ПЗУ и Android 7.0 в качестве ОС. Данное устройство было представлено в среднем ценовом сегменте и стоило около 15 тысяч рублей на 2016 год. Его сегодняшний аналог в этом сегменте: Galaxy A23. Благодаря относительно невысокой цене на девайс и адекватной поддержке (смартфон получал апдейты с 6.0 до 7.0), гаджет часто покупали вместо iPhone 6 со вторичного рынка, а в последующие годы устройство продолжало котироваться на вторичном рынке, оставаясь относительно востребованным и сейчас. Средняя рыночная цена — 1.500-2.000 рублей за рабочее устройство с AMOLED дисплеем. Устройство с китайским IPS аналогом будет стоить около 1.000 рублей (если вам об этом честно напишут).
Мне же этот девайс достался за 200 рублей. Женщина продавала два смартфона за 400 рублей, пометив их как «на запчасти»: Galaxy Y (о котором была статья) и J5. Ей было жалко выкидывать их и она выставила девайсы на известной онлайн-барахолке. Так получилось, что эти девайсы должны были попасть ко мне: я написал одним из первых, хотя сколько же людей навалилось ей в личку!
Толкнув АКБ и обойдя привязку к аккаунту Google (я описывал способ в статье про j3), я начал пользоваться девайсом как своим основным.
С J5 я ходил с апреля 2022 года по октябрь, сменив его на Galaxy S4 Mini, который подарил мне читатель хабра. Недавно я пересел на «большой» Galaxy S4: уж очень он мне нравится!
❯ Прошиваем девайс
Большинство смартфонов на Snapdragon 410 не требуют даже разблокировки загрузчика! Во многих смартфонах Samsung тех лет максимум ограничений — это надпись «set warranty bit recovery» при загрузке и отключение Knox и Samsung Pay. Те, кто ставил прошивки раньше, наверняка найдут процесс установки нового софта до боли знакомым:
Прошиваем рекавери TWRP;
Закидываем во внутреннюю память архив с прошивкой;
Прошиваем архив через Install ZIP;
Делаем wipe cache/wipe data.
Ничего не поменялось с 2011! Для скачивания файлов с 4pda нужна регистрация — иначе будет ошибка 404.
Для прошивки «recovery», нам пригодится фирменный флэшер Samsung —Odin. Odin используется в смартфонах от Samsung с самых первых их устройств на Android и сам по себе очень удобен.
Кроме того, нам понадобится самTWRP.
Запускаем Odin, нажимаем на AP и выбираем TWRP.
Теперь нам нужно ввести девайс в режим Odin. Для этого можно либо нажать громкость вниз + домой + включение, а затем нажать громкость вниз, либо если по каким-то причинам кнопки громкости не работают, можно перезагрузиться используя adb:
adb reboot bootloader
Подключаем девайс к ПК, Odin должен увидеть устройство. Нажимаем Start и прошиваем устройство. После этого, копируем архив с прошивкой во внутреннюю память и обязательно выходим из аккаунта Google. В TWRP можно зайти сочетанием громкость вверх + включение, или если не работают кнопки громкости — с помощью adb reboot recovery.
Делаем вайпы на 4х разделах: ART Cache, Cache, Data и System. Internal memory трогать не нужно — это внутренняя память устройства. Идём в Install ZIP -> выбираем архив и свайпаем слайдер.
Для J510H нужно установить другое ядро, см. в линке на 4pda
После перепрошивки, девайс перезагружаем и видим меню LineageOS! Я выбрал именно «линейку», поскольку привык к CyanogenMod-подобным кастомам, они максимально чистые и шустрые. Теперь мы лишились NFC и VoLTE, но получали свежую версию Android.
❯ Как работает девайс теперь?
В «линейке» нет блоатвари, по умолчанию тут нет даже GApps (которые можно поставить отдельно). Именно поэтому, девайс летает как ракета во всех повседневных задачах. Установлен минимально-необходимый набор приложений: телефон, браузер, сообщения, контакты. GApps можно поставить отдельно, либо выбрать другой магазин приложений. Например F-Droid
Давайте ещё раз вспомним вводные данные: мы имеем 6-летнее устройство, с чипсетом 9-летней выдержки на Android 10 без GApps’ов. И в базовых задачах он бегает очень хорошо: мессенджеры, соц. сети, музыка — всё это работает на достойном уровне. Хотя о играх придётся забыть — Adreno 305 в HD даже GTA Vice City тянет лишь в 50% разрешении.
А ещё, кастомная прошивка добавляет Always on Display, который очень актуален на OLED дисплеях. Теперь девайс даже не нужно разблокировать, чтобы получить последние уведомления:
Характеристики устройства выглядят ультрабюджетными в наше время, девайс не наберет много очков в синтетике. Однако он всё ещё мощнее устройств до 6.000 рублей из ближайшего DNS, которые работают на базе MT6580/MT6735, за исключением GPU (Mali показывает себя гораздо лучше). Но синтетика и реальное использование — разные вещи. Редмики в синтетике гораздо мощнее Snapdragon 410 и чего толку, если MIUI отжирает все их ресурсы!? Кстати, пользователи старых редмиков — эта статья наглядный повод прошить инженерку/кастом.
Поскольку у меня нет GApps’ов, в качестве клиента YouTube я использую NewPipe. Это быстрый и легкий клиент, который местами гораздо удобнее официального. Девайс спокойно «переваривает» видео 1080p. Взамен, мы теряем возможность комментировать и управлять каналом, но если вы вдруг ведете свой канал — может поставить Vanced и microG. Я же предпочитаю не пользоваться сервисами от Google вообще.
В качестве клиента ВК, я предпочитаю использовать Kate Mobile. В целом, некоторые люди продолжают пользоваться VTosters и прочими модами, основанными на базе старых и шустрых версий оф. клиента ВК. Листание ленты и прослушивание музыки удаётся девайсу на ура — скроллинг очень плавный, а благодаря наличию LTE — ресурсы загружаются весьма быстро.
С Telegram проблем нет, но я пользуюсь им для общения. Я не знаю как он себя поведет, если вам прилетает 100 пушей в минуту с новостных каналов 🙂
Сёрфинг девайсу даётся отлично. Android 10 ещё долго будет поддерживаться, никаких проблем с сертификатами нет. Хабр грузится не быстро, но лагов при прокрутке нет вообще. В бенчмарках тоже всё неплохо.
Фотовозможности девайса весьма средние. В целом, фотографирует он не так уж и плохо, но только в руках нормального фотографа. Насколько я знаю, есть возможность установить камеру с Google Pixel — там скорее всего всё будет гораздо лучше. Стандартное приложение не блещет возможностями, но запечатлеть момент сможет без проблем.
А вот с играми вопрос обстоит заметно хуже. И всё упирается в GPU. Это не значит, что тут не во что поиграть: игрушки до 2014 он тянет отлично. Почему бы не вспомнить мобильную классику и не поиграть в Dead Trigger, Cut The Rope или, например, GTA 3?
Эмулятор PSP идёт плохо, но Dreamcast/N64/PS1 должны работать очень хорошо. Что занимательно — несмотря на то, что Snapdragon 410 — 64х битный чипсет, ОС под него скомпилирована 32х битная. А значит никакого эмулятора GameCube!
Есть поддержка Miracast через Wi-Fi. Эта фишка тут работает отлично.
❯ Выводы
Конечно, если стоит выбор бюджетного БУ устройства, то можно добавить еще 2-3 тысячи рублей и купить, например, флагманский Galaxy S6/S7. Но поскольку J5 были очень популярными в своё время и у многих продолжают лежать, а у вас появилась необходимость во втором смартфоне, или даже основном, то у такого девайса куча неоспоримых плюсов:
+ Super AMOLED дисплей HD разрешения за копейки. Это серьёзный плюс для большинства людей: амоледы яркие и приятны большинству глаз. Их хорошо видно на солнце. Однако, некоторые люди чувствительны к таким дисплеям и их глаза могут через время уставать.
+ Относительная ремонтопригодность. Оригинальные AMOLED модули стоят весьма дорого, а поскольку самая частая неисправность всей J линейки — это битые модули, то найти за пару сотен рабочего донора и перекинуть плату не составляет никаких проблем. Плюс, китайцы наконец-то научились копировать контроллеры Samsung и делать IPS/TN дисплеи, совместимые с оригиналами.
+ Большое количество кастомных прошивок на самый разный вкус. Тут и PixelExperience со всеми фишками Google Pixel, и гибкий crDroid, и LineageOS. Благодаря не заблокированному загрузчику, мы можем устанавливать что захотим в пару кликов!
+ Поддержка MicroSD. Это звучало бы дико несколько лет назад, но здесь всё ещё есть поддержка флэшек, плюс встроенные 16гб памяти. В целом, этого хватает для комфортного пользования.
+ NFC и приложения банков. Тут всё работает без каких либо проблем, но на части кастомов NFC не работает. Плюс, после установки кастомного рекавери вы навсегда теряете доступ к Samsung Pay и Knox! Однако я не могу сказать, что будет через год после написания этой статьи. Сбер, например, постоянно жирнеет и начинает лагать даже свежих среднебюджетках, а СБП нет в браузерной версии. Задумываюсь о смене банка.
А так же, хотел бы отметить следующие минусы:
— Хрупкий дисплей. Это частая проблема AMOLED дисплеев — у них слишком тонкая воздушная прослойка между тачскрином и самим дисплеем. Тут уж как повезет — от падения на асфальт дисплей либо не выживет (и не будет вообще ничего показывать, малейшее повреждение матрицы на оледах вызывает неработоспособность всего дисплея), либо треснет тачскрин, либо появятся пятна на дисплее. Плюс, нет возможности замены тачскрина отдельно — только модуль в сборе.
— Выгорание дисплея со временем. Это не критично, у меня S4 с выгоревшими участками выглядит нормально, но кому-то может быть неприятно. Но поскольку девайсу 6+ лет, неизвестно сколько им пользовались до этого.
— Слабенькая АКБ и отсутствие поддержки быстрой зарядки. Девайс относительно долго заряжается. Хотя возможность замены АКБ снятием задней крышки частично компенсирует этот недостаток.
— Слабый GPU. Только старые игры, ребенку может не понравится, но кто-то из читателей найдет в этом плюс. Нечего в геншины всякие играть!
В одной из следующих статей, я расскажу вам как портировать кастомную прошивку на свой девайс самостоятельно, в пределах чипсета. А вы как считаете, есть смысл накатывать кастом?
Подписывайтесь на меня и TimeWeb Cloud, чтобы не пропустить новые регулярные статьи о различных девайсах. Возможно, вам будут интересны другие мои статьи по теме мобилок:
Сегодня мы установили уже готовую и протестированную кастомную прошивку. В следующей статье, я хочу рассказать вам, как можно портировать прошивки между устройствами на базе чипсетов MediaTek. Гайд может пригодится владельцам свежих бюджетных реплик с алика а-ля P20 Pro, P30 Pro, Welcome 12 Pro Max, и других подобных девайсов, которые на стоковой прошивке сильно лагают или появились баги, которые не лечатся сбросом до заводских, а родную прошивку найти не представляется возможным.