Java или Python?
Из разговора с коллегой IT-шником
- А что тебе ближе Java или Python?
- Это вопрос буквально "Жаба vs Гадюка"
Из разговора с коллегой IT-шником
- А что тебе ближе Java или Python?
- Это вопрос буквально "Жаба vs Гадюка"
Перевод:
- Один час на Python это семь часов на Java
Всем доброго времени суток!
Публикую рецензию подписчицы нашего телеграмм-канала t.me/it_begin на книгу "Совершенный код" от автора Стива Макконнелла
Стоит читать? Нет! Почему? Опишу в статье.
Начать, хотелось бы с того, что сообщество StackOverFlow признало книгу Стива Макконнелла "самой впечатляющей книгой, которую должен прочесть каждый разработчик программного обеспечения"
Обратимся к цитате из книги:
Ваш работодатель не может заставить вас стать хорошим программистом, а зачастую он даже не может оценить, насколько хороши вы как программист. Если вы хотите стать отличным программистом, вы отвечаете за это сами. Это зависит от вашего характера.
Как мы знаем, бывают книги, что переиздают буквально каждый год, по причине их отставания от тех вещей, что происходит в индустрии. Есть же книги, что фундаментальны и начал их изучение, у вас два варианта развития событий. Вы или полюбите программирование или же получите полное отвращение к всему, что с ним связано.
Книга Стива Макконнелла стоит посередине этих понятий, сочетая в себе наставления и справочник по решению поставленных задач, независимо от того, какой язык программирования вы используете .
Кто целевая аудитория книги?
Это терпеливые, вдумчивые и целеустремленные люди, что имеют достаточно свободного времени.
Для начала, обратим внимание на объём нашей книги. 900 страниц!
Такой объём возможно напугает далеко не каждого и кто читает в среднем 30 страниц в день управится с книгой за месяц. но ...
1. Плотность информации, что изложена на страницах , очень велика,
2. Большое количество ссылок на сайты с дополнительным материалом, которые любезно оставил автор
3. В конце каждой главы - список рекомендуемой литературы
Много ли кода в книге?
Крайне не хватает настоящего кода и реальных задач, автор же ссылается на sourceforge.net , называя его лучшим сборником кода.
В наших реалиях это github и сайты с библиотеками для вашего языка программирования.
Имеет ли смысл читать книгу, если у меня нулевой опыт в программировании?
Нет. Нет никакого смысла тратить своё время, если вы не знаете ни одного языка программирования, так как с большой вероятностью вы ничего не поймете в книге.
Также есть и обратная медаль у этого всего. Книга выпущена в 1993 г. и как мы с вами понимание, за 29 лет многие вещи в индустрии изменились и закрепились так сильно, что стали очевидны каждому разработчику, что также не мешает им создавать плохой код.
Есть ли альтернативы данной книге?
Если вы хотите улучшить свой код и стиль его написания, но нет желания читать талмуд в 900 страниц, то советую обратить внимание на книгу "Программирование без дураков"
Авторы: Катрин Пассиг., Йоханнес Яндер. В чем-то эти книги перекликаются, но книга Стива намного сильнее углубляется в свою тему.
Основные принципы написания кода, изложенные в книге:
1. Никогда не следуйте требованиям, не вникая в них. - ибо требования устаревают и за трендами их развития так или иначе необходимо следить, а не просто делать так, потому что раньше всегда так делали.
2. Пока не поймете, так ли хорош ваш подход на самом деле, не делайте поспешных выводов - то что кажется вам практическим и удобным в использовании - может тратить много ресурсов компьютера и времени, к примеру - использование избыточных комментариев.
3.Будь проще - твой код должен быть понятен и ясен каждому, комментарии должны быть как можно ближе к коду.
Если не можете что-то реализовать, не создавайте кучу переменных в одном методе и не держите их там, старайтесь избегать вложенных циклов и разных ветвлений
Делают ли годы программирования нас профессионалами?
Также в книге затрагивается вопрос того, что годы программирования, сами по себе, ни коем образом не характеризуют вас как отличного специалиста. Вы можете кодить 3-10-15 лет, но делать одно и тоже, не расти профессионально. По итогу, становиться лучше или же оставаться на том же уровне профессионализма - дело сугубо ваше. Как и интерес к чему-то новому, смотреть как работают другие и посмотреть на свою работу со стороны - то что поможет вам расти.
Полезна ли книга?
Из всей книги, лишь 3-5% имеют ценность. Заставляет задуматься хорошо глава о семантическом сопряжении. Глава про инструментарий также является по мне полезной. Пожалела я о потраченном времени на данную книги. Книга содержит много моментов из мотивационной литературы наподобие "Думай и Богатей", что дополнительно растягивает книгу и отнимает наше время. За этим ли мы пришли к её прочтению?Книга очень затянута. Две крайние главы - это около 100 страниц, в которых резюмируется то, что было написано уже ранее. Это при том, что резюмирование происходит абсолютно в каждой главе.
По мне, буду в здравом уме, прочитать эту книгу от корки до корки - невозможно.
Итог по книге:
Книга крайне затянутая. Хоть и содержит в себе большое число полезных ссылок и сносок на рекомендуемую литературу, но объём книги мог бы получиться и поменьше, если не переливать из пустого порожнее на протяжении 900 страниц
Пройтись по диагонали и что-то подчеркнуть для себя - книга подойдет. Но вчитываться в неё, вникать в каждую деталь - смысла никого не имеет. Потратите только время и нервы.
Наш канал
Кому интересны программирование, изучение иностранных языков и кто просто любит развиваться
публикую также интересные статьи и интервью на телеграмм-канале IT-старт t.me/it_begin
Подписывайтесь ;)
Спасибо!
Добрый день всем. Я решил изучать java, и для начала подумал поступить в полицеальную школу на java разработчика. В Польше полицеальная школа это что-то типа пту. Заведение, куда можно пойти имея среднее образование, и в течении одного-двух( в моем случае одного) лет получить профессию. Занятия проходят по выходным. У меня есть описание с сайта школы, которое я вам перевел:
В этом курсе вы изучите инструменты и технологии программирования на JAVA. Вы узнаете, как создать веб-приложение, и вы узнаете, как использовать веб-контейнер Apache Tomcat на практике.
ПРЕДМЕТЫ
Введение в программирование на Java
Введение в алгоритмы и структуры данных
Введение в тестирование приложений
Введение в технологию JVM
Продвинутое программирование на Java
Базы данных — Hibernate, JDBC
Система контроля версий GIT
Разработка программного обеспечения
Сервлеты и JSP
Язык SQL
Spring фреймворк
Серверы приложений
Проектная группа
И, собственно, вопрос: нормально ли все это выглядит? Я имею в виду перечень предметов. Как думаете, даст ли мне это необходимые знания? Естественно я буду читать книжки и решать задачи и кроме этого обучения, время готов уделять каждый будний день часа по 2. Просто хотелось бы чтобы мне дали какой-то план обучения, и личное общение с понимающими в предмете людьми, поэтому и хочу пойти в эту школу.
П.С. В этой школе ещё есть 2 интересных направления:
1. Programowanie Python z Cisco Networking Academy
В этом курсе вы узнаете об инструментах Python и средах программирования. Вы научитесь выполнять действия, используя условные конструкции и циклы. Вы узнаете, как создавать объекты и классы в программном коде, а также изучите вопросы, связанные с функциями и списками.
ПРЕДМЕТЫ
Повторение действий с циклами
Ввод, обработка и вывод. Типы данных и операторы
Библиотеки и структуры данных
Программирование на Питоне. Инструменты и среды разработки
Принятие решений в программах
Ветвление кода, циклы while и for, дизайн программы
Функции и списки
Последний проект
Файловые операции и обработка исключений
Классы и объектно-ориентированное программирование
2. Programowanie aplikacji internetowych i mobilnych
В этом курсе вы узнаете об алгоритмах и структурах данных, архитектуре компьютерных систем и сетевой инфраструктуре. Вы получите знания о технологиях HTML и CSS, разработке веб-сайтов и библиотеках Bootstrap. Вы также изучите программирование на следующих языках: JavaScript, SQL (библиотеки: AngularJS, Jquery), а также объектно-ориентированное программирование на PHP и Java, а также создание графических приложений с помощью JavaFX. Кроме того, в рамках учебы вы можете пройти курсы Сетевой академии Cisco.
ВЫПУСКНЫЕ ЗНАНИЯ И НАВЫКИ:
-знание алгоритмов и структур данных, архитектуры компьютерных систем, интернет-сервисов и сетевой инфраструктуры
-знание технологий HTML и CSS, веб-разработка, библиотека Bootstrap
-основы SEO/SEM и CMS систем
-программирование на JavaScript, знание библиотек: AngularJS, Jquery
-Язык SQL, проектирование, реализация и использование реляционных баз данных на базе MySQL
-объектно-ориентированное программирование на PHP, фреймворки и создание сайтов с использованием PHP
-знание Java, создание графических приложений с помощью JavaFX
-разработка мобильных приложений для платформы Android и публикация на Android Market
Управление ИТ-проектами
-приемы и методы, используемые для обеспечения безопасности информационных систем
Во втором варианте, конечно, много чего понамешано, даже не знаю, что сказать) Может быть стоит и на них взглянуть?
Спасибо за внимание, буду благодарен за ответы.
В прошлой своей статье рассмотрел те основные моменты, что помогли мне улучшить свой английский за 3 года.
Тезисно распишу дополнительно про те инструменты. предложенные в комментариях к прошлому посту, что также будут полезны и помогут вам в самостоятельном изучении языка.
Практика слуха:
Oxford BookWorms - это подобранные по сложности аудио и печатные тексты (от А1 до B2). Вот когда ты на А1 и ничего не понимаешь: Oxford Bookworms Level-1 в наушники телефона и го на работу
Уровень Starter подойдет тем, кто недавно начал изучение английского. Книги этого уровня хорошо иллюстрированы, и их особенностью является то, что кроме обычного повествования, есть книги, где текст представлен в виде комикса, а в некоторых произведениях вам нужно будет самим решать, как будет дальше развиваться история.
Определить свой уровень вы также можете, пройдя тесты на сайте издательства.
Что касается чтения книг своего уровня, здесь, конечно, все не так строго, если вы взяли книгу чуть сложнее или чуть проще, то ничего страшного, если вам при этом книга вам нравится.
Narrow Reading
есть классный инструмент: научно-популярная литература. Она пишется специально просто. И в каждой главе обычно +/- одинаковые новые слова. Пока читаешь главу все запомнил.
Online-приложения
Видео с разговорным английским любого уровня:
- Сможете изучить фразы из реальной жизни носителей языка c YouTube в рамках специально подобранных для вас курсов. Похожие по смыслу выражения сгруппированы так, чтобы вы могли с легкостью в них разобраться.
- Сможете проверить правильность произношения с помощью ИИ помощника: запишите свою речь и получите оценку. Постоянно практикуясь и отслеживая свой прогресс, вы сможете легко избавиться от акцента.
Бесплатное мобильное приложение, которое поможет вам обогатить свой словарный запас до уровня, необходимого для просмотра фильмов и сериалов в оригинале. Изучение английских слов из сериалов и книг. В приложении есть разного уровня литература, с переводом нажатием и т.д. Такой подход к изучению английского кажется довольно здравым. От простой зубрёжки мало толку, знания нужно закреплять на практике. Если для бесед с носителем языка нужно сначала найти этого самого носителя, а потом уговорить его на регулярной основе общаться с вами, то с кино всё куда проще. Учите слова, смотрите фильмы и потихоньку прокачиваете языковые навыки.
Если статья показалась вам интересной, то буду благодарен за подписку на мой ТГ-канал IT-старт, где я выкладываю интервью действующих программистов и вспомогательный материал для тех, кто только начинает свой путь в IT.
Всем доброго времени суток. Публикую опыт моего хорошего товарища, что с математическим образованием успешно работает с С++ более 15 лет.
Оформил всё в формате текстового интервью, читаться и восприниматься будет легко, стартуем)
1. Расскажите о вашем образовании?
Мое образование — это весьма интересная штука. В школе я углубленно изучал математику, полюбил ее и с тех пор моя жизнь так или иначе связана с ней. После школы я поступил на два факультета - экономический и механико-математический. Выбрал экономическую теорию просто потому, что там была более крутая математика на вступительных экзаменах. Экономическая теория является весьма специфическим предметом, это какая-то смесь математики и философии с примерно такой же практической пользой. На самом деле ряд предметов, изученных в университете, мне очень пригодились позднее - особенно линейная алгебра, статистика, теория вероятностей и математическое программирование (раздел математики, посвященный оптимизационным задачам, ничего общего с компьютерами). Был любопытный предмет, называемый эконометрикой, по факту это статистический анализ больших данных, позволяющий найти взаимосвязи данных, прямо-таки столь популярное сейчас машинное обучение. После получения высшего образования я несколько лет проучился в Вычислительном центре РАН, тема моей так и не законченной диссертации была "Параллельные методы решения задач дискретной оптимизации транспортного типа", простыми словами я решал задачу коммивояжера. Привет математическое программирование из университета.
2. Почему вы выбрали именно C++? Чем импонирует вам данный язык программирования?
Я его не выбирал, это он меня выбрал, я честно предпринял несколько попыток уйти из него, но он всякий раз меня догонял. Последняя попытка была в Microsoft, там я писал на C#, и думал, что я такой умный и сумел уйти от C++, но как говорил один мой друг "C++ умеет ждать", и в Microsoft я опять переключился на C++. По своей воле, очень уж интересная была задача.
3. Начать профессиональную деятельность на С++ получилось благодаря самообразованию или же благодаря профильному образованию? Расскажите о своём пути в С++
Я решал задачу коммивояжера и ее варианты на C++, так уж получилось, что это был самый подходящий язык для такой задачи. Затем я начал работать в Яндексе, в отделе качества поиска над MapReduce (помните тему диссертации - "Параллельные методы..."), там тоже был C++, и он так и не отпускал меня с тех пор.
4. Есть ли книги по С++, что вы можете посоветовать?
Самыми полезными для меня были, пожалуй, серия небольших книг Скота Майерса "Эффективное использование С++" с набором рецептов, понять STL мне помогла книга Николая Джосьютиса по STL "С++. Стандартная библиотека". Но самое главное, конечно же, практика. Как язык C++ меня никогда особо не интересовал, я рассматривал его лишь как средство для решения интересных задач.
5. Расскажите о вашей компании, где вы работаете. Что входит в ваши рабочие обязанности на данный момент и чем занимается ваша компания? Какой продукт?
Я работаю Senior Software Engineer в MongoDB, компании, которая разрабатывает собственную СУБД (система управления базами данных). Моя команда занимается оптимизацией запросов (Query Optimization). MongoDB привлекла меня тем, что сумела успешно бросить вызов на рынке СУБД, казалось бы, надежно поделенного между такими гигантами как Microsoft SQL Server, Oracle и IBM DB2.
Так получилось, что с 70-х годов и исследовательского проекта реляционных баз данных IBM System R, от которого произошли современные базы данных, очень многое изменилось. Благодаря интернет-компаниям, таким как Google, стало набирать популярность горизонтальное масштабирование. Другой тип масштабирования, вертикальное, характеризуется тем, что по мере роста требований к вычислительным мощностям, старые сервера заменяют на более мощные, происходит вертикальный рост. Но такой рост всегда ограничен мощностями одного сервера. Горизонтальный рост характеризуется не заменой сервера на более мощный, а добавлением новых серверов. Это оказывается дешевле и позволяет почти неограниченно расти, но и требование к программному обеспечению гораздо выше, новый софт должен быть "распределенным", то есть работать на множестве серверов. Одна из первых попыток распределения работы на множество серверов была система MapReduce, над одной из реализаций которой я работал в Яндексе.
Классические СУБД оказались не готовы к такому повороту событий по ряду причин: изначально они были спроектированы для работы на одном сервере, и реляционная модель данных предполагает высокую нормализацию данных, грубо говоря никаких дублирующих данных, вместо сохранения адреса для каждого заказа, адрес сохраняется в отдельной таблице и каждый заказ содержит уникальный идентификатор адреса, а значит большое число джойнов (join), т. е. теперь, чтобы получить, адрес для заказа надо найти его по идентификатору в другой таблице.
MongoDB реализовала совершенно новый подход, называемый документным, все связанные данные должны хранится вместе. Это позволяет сократить число джойнов, а то и полностью избавиться от них, это опять же упрощает создание по-настоящему распределенной базы данных. Новый подход оказался коммерчески успешным, MongoDB как СУБД активно развивается, и старый query engine (движок запросов) перестал отвечать требованиям новой MongoDB. Я сейчас работаю над оптимизацией запросов в новом движке, это задача дискретной оптимизации и ее методы во многом пересекаются с моей работой над задачей коммивояжера. Также используются метод ветвей и границ (Cascades, реализованный в Microsoft SQL Server) и динамическое программирование (Oracle и IBM DB2).
6. Расскажите о проектах, в которых вы приняли участие? О проектах и их функциональных возможностях.
Я был техническом лидером проекта поиска по графу знаний, в проект входила реализация графа знаний в поисковом индексе и поддержка соответствующей грамматики поиска к примеру «файлы Йена программиста из Лондона». Мы разбивали эту фразу и обрабатывали запрос следующим образом в индексе контактов находили человека с именем Йен, должностью программист/разработчик или другой синоним из Лондона. Затем переходили по графу знаний и находили файлы, которые этот человек правил или создавал. Вы можете видеть, как работает подобный поиск в Microsoft Office 365. Если вы знаете английский язык вы можете увидеть демонстрацию вначале этого промо видео: https://youtu.be/zbqlAd6aMoE
7. Исходя из вашего опыта, на какие личные качества/навыки/компетенции в первую очередь обращают внимания работодатели в вашей сфере?
На интервью обычно проверяются три навыка:
навык решения задач и насколько эффективно человек может сформулировать и донести свои мысли о разных подходах к решению задачи, обсудить эти подходы и выбрать правильный
насколько эффективно человек умеет работать в команде, здесь оценивается множество навыков, к примеру, умение признавать свои ошибки, умение конструктивно критиковать и принимать критику, эмпатия и т.п.
проектирование систем: как реализовать тот иной сервис или функциональность в программе, начиная с выбора системы хранения данных, продолжая методами обмена данными и так далее, оценивается, в частности, то как умеет ли человек собирать требования о будущей система и как он умеет использовать требования для выбора подходящих технологий.
8. По вашему мнению, каков спрос на рынке труда и какие перспективы у данной профессии в ближайшие полгода – год, исходя из нынешней экономической ситуации?
Да все как обычно, не вижу никаких причин, чтобы что-то изменилось в ближайший год.
9. Есть ли спрос в данный момент на новичков (Junior-специалистов) в С++ ?
В MongoDB, Microsoft и т. п. активно практикуется приглашение на практику студентов ВУЗов (internship), после окончания ВУЗа студенты могут вернуться в компанию, обычно это практически единственный способ попасть новичку на работу в ведущие компании.
10. Подводя итоги. Что можете посоветовать людям, что самостоятельно изучить С++ и в дальнейшем работать в данной сфере?
Я бы порекомендовал для начала осознать, что язык программирования не так и важен, важны фундаментальные знания – линейная алгебра, статистика, алгоритмы и структуры данных. Умение применять эти знания на практике. Я не говорю, что я никогда не читал книг по языкам программирования, это не так. По одному C++ я прочитал с десяток книг, а еще я читал книги и в целом изучал такие языки как Java, C#, Python, JavaScript, Haskell, F#, OCaml, Ruby. Но это никогда не было в моих приоритетах, я понимал, что эти знания мимолетны и быстро устаревают. Что не устаревает так это общие принципы программирования (они, кстати, часто описаны в книгах по языкам программирования в том числе), алгоритмы, принципы построения систем.
К примеру, самый продвинутый Query Optimizer сегодня реализован в Microsoft SQL Server, его принципы были разработаны в 90-е годы Goetz Graefe. Этот оптимизатор используется метод ветвей и границ, разработанный в 60-е годы Литтлом для решения задачи коммивояжера. Серьезные современные передовые системы базируются на принципах, разработанных десятилетия назад.
Может показаться, что моя дорога была прямолинейной и я знал к чему иду, это неправда. У меня было много метаний и поисков, одно лишь было постоянным - я всегда любил математику и алгоритмы и стремился ими заниматься, а также я любил программирование потому, что оно даёт мне свободу выражать свои идеи во что-то работающее. Именно этот акт творчества во время программирования когда-то привёл меня в восторг, и этот восторг не отпускает меня до сих пор.
Успешного самообразование, коллеги)
Если вам интересна IT-сфера и интервью с программистами
публикую также свои статьи и интервью на канале t.me/it_begin
Подписывайтесь :)
Спасибо!
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
В сегодняшнем материале попытаемся разобраться с перспективами отечественного ПО и железа в нынешних реалиях и о отечественных аналогах, материал подготовлен при помощи подписчиков нашего канала IT-старт t.me/it_begin
Рынок IT находится в дикой турбулентности
Согласно прогнозам IDC, опубликованным в апреле, объём IT-рынка в 2022 году вынужденно сократится на 39.2%
Но не будем забывать то, в какое время мы сейчас живем. На фоне ухода западных компаний из РФ интерес к отечественным разработкам за последние месяцы вырос более чем на 300%.
Импортозамещение
Попытки импортозамещения начались не вчера. Сам этот процесс в IT-сфере идет с появления первых санкций 2014 г.
Акцент на импортозамещение также сделан посредством национальной программы "Цифровая экономика", используя которую госкорпорации еще в 2021 году должны были заменить иностранное ПО российским софтом, но , к концу 2021 года из 13% госкомпаний смогли это реализовать.
На данный момент максимальной популярностью пользуются отечественные аналоги офисных программ и несомненно технические решения в сфере информационной безопасности.
Microsoft Office планируется заменить российским "Р7-Офис" или "МойОфис,
но, чем заменить те же SAP и Oracle, что используют тысячи предприятий в РФ и что на данный момент не имеют полноценных российских аналогов? Тут уже сложнее. Даже при наличии разработки подобного программного обеспечения, переход на него потребует больших финансовых и временных затрат, ведь необходимо будет адаптировать и перестроить все бизнес-процессы, подстраивая их под новые системы. Так или иначе, лишь спустя время мы сможем увидеть, как наш крупный бизнес справится с этой задачей.
Российское железо
На данный момент, самый конкурентный процессор - это "Байкал-S", что по характеристикам сопоставим с Intel и AMD 2019 года. По вычислительным возможностям он схож с Intel Xeon 6148 Gold.
Также, в данный момент ведется работа над созданием процессоров следующего поколения - "Эльбрус-2С3" и "Эльбрус-16С" и созданием одноименной операционной системы "Эльбрус" - что используется организациями и предприятиями для развертывания рабочих станций и серверов.
Российское программное обеспечение
Если говорить о "Astra Linux", то она входит в реестр Минкомсвязи и сертифицирована для использования. В первую очередь, данная ОС предназначена для обработки данных в режиме повышенной защиты обрабатываемой информации.
Говоря о "Alt Linux", необходимо в первую очередь отметить, что данная ОС считается самой удобной в использовании для массового пользователя. В комплекте с ней идёт полный комплект программ. ОС проста в установке и распространяется бесплатно.
Также стоит отметить операционную систему "Ось", что также на базе Linux. ОС представляет решения для комплексной автоматизации рабочих мест и информационной структуры предприятий, в том числе в серверах, дата-центра и рабочих станциях.
Отечественные аналоги Google Play и AppStore
SberStore - магазин приложений от компании "Сбер" для массового потребителя на базе корпоративных приложений для специалистов
Яндекс.Store - так или иначе, сейчас время возможностей и Яндекс не может их упустить. Вследствие этого Яндекс рассматривает вопрос о перезапуске закрытого пару лет назад Яндекс.Store.
VK - в данной коммерческой гонке планирует принять участие и команда VK, проектное название данного приложения "HashStore".
Подводим итог
Подводя итоги, мы можем наблюдать, как меняется окружающая нас IT-реальность. То что было доступно ранее, возможно скоро станет недоступно в использовании.
Так или иначе, в плане офисных программ решения замены уже имеются. В плане операционных систем все решения сводятся к отечественным ОС, что базируются на Linux, что не для всех является удобным в использовании.
К сожалению вопрос замены достойными и полноценными аналогами ПО от SAP и Oracle является сложным и над этой задачей ещё придётся потрудиться.
Если же говорить о том, смогут ли Сбер, Яндекс и VK заменить в РФ таких гигантов IT-индустрии, как Google Play и AppStore - покажет лишь время.
Если вас интересует IT его перспективы в РФ ,
публикую также свои статьи и интервью c программистами на канале t.me/it_begin
Подписывайтесь, если будет интересно ;)
Спасибо!