На что ориентированы перспективные компьютерные системы
Этот вопрос нам прислал студент третьего курса факультета информационных технологий и полностью он звучит так: «Учат всему понемногу и теперь остро встал вопрос: на чём программировать-то? Язык программирования не столь существенен, ибо можно разобраться во всем. Конкретно интересует следующее: в какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?»
Передаём слово экспертам.
Мы советуем Интернет и всё, что с ним связано. Лучше строить карьеру в том, что растет, а именно интернет-сервисы выросли в десятки раз за последние десять лет и нет никаких признаков, что это развитие остановится.
Конечно, есть области разработки, которые представляют определенную «модную» тему. Сейчас это мобильные приложения, облачные вычисления, Big data. Какое-то время назад были мега-популярны игры. Однако это не самая правильная постановка вопроса, потому что технологии быстро меняются. Для того чтобы была перспектива роста, нужно иметь хорошую фундаментальную подготовку — хорошего знания языка и алгоритмов недостаточно. Поэтому следует подумать на счет стажировки в какой-то компании. При этом непременно нужно сочетать работу без ущерба для учебы. Обратите внимание на кафедры отдельно взятых компаний в своем вузе. У больших компаний, как Parallels, есть свои научно-исследовательские центры в МФТИ, Бауманке, Санкт-Петербургском Академическом Университете, РосНОУ, Новосибирском Государственном университете. Там создаются условия, даются исследовательские задачи, которые моделируют для студентов реальную работу в компании.
Больше всего зарабатывают мобильные приложения — стартапы, которые взлетают с крутой идеей.
Сейчас в нашем мире очень много всего связано с Интернетом, поэтому для хорошего заработка лучше выбрать какой-нибудь язык, позволяющий создавать web-приложения. Если конкретизировать, то Ruby + JavaScript. Ruby позволяет создавать приложения очень быстро, а в нашем динамически развивающимся мире это очень важно. Если ты можешь сделать приложение за несколько дней, это очень ценится. Не советую Java или PHP потому, что идеологии первого уже устарели, а второй — язык быдлокодеров и зашел в тупик в своем развитии. Рекомендую изучать Javascript, а еще лучше CoffeeScript (в случае использования Ruby): без них никакой динамики на фронтенде не будет, а значит ваше приложение будет уныло. Не советую учиться на Flash’еров — эта технология умирает.
Обязательно нужно учиться пользоваться фреймворками: для Ruby — это Ruby on Rails, для JavaScript — Angular.js или Ember.js (но ни в коем случае Backbone.js или Spring.js). Фреймворки позволяют лепить приложения не за дни, а за часы!
Вы точно не останетесь без работы и будете зарабатывать достаточно (чтобы, например, обеспечить семью), если начнете развиваться в этом направлении.
Еще одна, на мой взгляд, прибыльная отрасль — мобильные приложения. Думаю, не надо объяснять почему: смартфоны есть даже у бомжей. Но тут есть нюанс: если вы собираетесь писать сами какие-то приложения, то, скорее всего, много на этом не заработаете — для приложений всегда нужна качественная идея. Но тем не менее вы всегда сможете устроиться на работу и зарабатывать.
Также хочу посоветовать сосредоточится на разработке под Android. Устройств на этой платформе очень много, а Apple в последнее время не внушает перспектив для разработчиков под iOS. Но это мое субъективное мнение.
Вы точно не останетесь без работы, если будете двигаться в этом направлении, однако размер заработка будет зависеть от вас.
Также я советую обратить внимание на DevOps. Такие специалисты действительно много зарабатывают, но в институтах этому не учат. Подробно рассказывать о методологии не буду: если интересно, почитайте сами.
Для индустрии разработки программного обеспечения и для программистов 2020 год стал значительным годом больших прорывов во многих областях. Пандемия значительно ускорила перевод самых разных процессов в цифровую среду, в результате тренды, о которых мы сегодня поговорим, будут представлять собой более масштабные явления, чем нечто подобное в прошлом году.
Разработка традиционных приложений и веб-проектов стала жизненно важным аспектом современного бизнеса, а программисты стали неотъемлемой частью самых разных организаций, помогая бизнесу внедрять инновации, создавать новые направления деятельности и развиваться.
Уже прошли четыре месяца 2021 года и сейчас совершенно очевидно то, что программист, обладающий актуальными знаниями и навыками, как и прежде, будет находиться в верхней части списка специалистов, которых ценят компании.
Здесь мне хотелось бы рассмотреть технологические тренды 2021 года, на которые стоит обратить внимание программистам. Всё то, о чём я буду говорить, основано на фактах, цифрах и данных из надёжных источников.
8. React — популярная библиотека для разработки пользовательских интерфейсов
Если взглянуть на фреймворки и библиотеки, используемые в веб-разработке, то оказывается, что тут первое место всё ещё принадлежит jQuery, но эта библиотека довольно скоро может уступить первенство React и Angular. Кроме того, React — это, в соответствии с результатами исследования Stack Overflow, библиотека для фронтенд-разработки, которая опережает другие подобные инструменты по количеству загрузок и по уровню использования. Разработчики выбирают её для создания интерфейсов чаще других подобных средств.
Библиотеки и фреймворки для фронтенд-разработки
Математика для компьютерных наук
Лучшая книга:
4. Инструменты для глубокого обучения
Globe News Wire даёт прогноз, в соответствии с которым рынок технологий глубокого обучения достигнет в 2028 году 93,34 миллиарда долларов, при стабильном совокупном среднегодовом темпе роста в 39,1%. Наиболее заметными глобальными фигурами на этом рынке являются Facebook и Google. По данным исследования, проведённого Stack Overflow среди разработчиков, оказалось, что фреймворк Google TensorFlow 2.0 популярнее, чем Facebook PyTorch. Причиной этого является тот факт, что фреймворк TensorFlow обладает всеми возможностями PyTorch, но при этом отлично работает в среде Google Colab.
TensorFlow популярнее PyTorch
Но, с другой стороны, разработчикам комфортнее работать с PyTorch, так как этот фреймворк включает в себя функционал, ориентированный на удобство работы с ним.
С PyTorch работать комфортнее, чем с TensorFlow
Не стоит и говорить о том, что в 2021 году и PyTorch, и TensorFlow 2.0. станут теми самыми инструментами, которые, в зависимости от нужд конкретного проекта, чаще всего будут использоваться там, где нужны технологии глубокого обучения.
Языки и компиляторы
Лучшая книга:
Операционные системы
Лучшая книга:
Почему вы до сих пор рекомендуете книжку с драконами (Compilers: Principles, Techniques and Tools)?
Потому что книжка с драконами до сих пор является полным и актуальным источником информации по компиляторам. Проблема в том, что никто и предположить не мог, что в итоге книга окажется инструкцией для преподавателей по составлению учебной программы. Вы же можете воспользоваться этим для составления своей собственной программы или следуя программе какого-либо преподавателя.
10. Пограничные вычисления
Пограничные вычисления представлены распределённой вычислительной инфраструктурой, расположенной как можно ближе к конечному пользователю, которая объединяет системы хранения данных и вычислительные мощности. По некоторым оценкам глобальный рынок пограничных вычислений к 2028 году может дорасти до 61,14 миллионов долларов. Учитывая рост использования IoT-устройств, транспортных средств с выходом в интернет, технологий искусственного интеллекта и машинного обучения, в этом и в следующих годах рынок пограничных вычислений будет бурно расти. Поэтому нам стоит быть готовыми к инновациям в этой области и к появлению в этой области новых стандартов.
Алгоритмы Руководство По Разработке
Мы полностью согласны с народной мудростью, которая гласит, что знание алгоритмов и структур данных — один из важнейших аспектов изучения компьютерных наук. К тому же, это отличный способ потренироваться в способности решать разного рода задачи, которые пригодятся в любой области компьютерных наук.
Есть сотни книг для изучения алгоритмов, но наш фаворит — «Алгоритмы Руководство по разработке» от Стивена Скиена. Наш выбор пал именно на неё, потому что автор определенно любит то, что он делает и хочет донести свои знания до читателя.
Для тех же, кто предпочитает лекции в формате видео, Скиена предлагает свой онлайн-курс. Также следует обратить внимание на курс Тима Рафгардена, доступного на Lagunita (сервис от университета Стэнфорда) или на Coursera. Материал обоих авторов очень полезен и информативен и кому из них уделить внимание — решать вам.
Мы практикуемся, решая задачи на Leetcode, потому что их задачи кажутся нам наиболее интересными. К тому же у каждой задачи есть ветка обсуждения и прикрепленное решение для самопроверки. Стоит отметить, что подобного рода задачи могут являться вопросами на интервью и решение их может сыграть вам на руку в будущем трудоустройстве. Для проверки своего знания алгоритмов решите 100 случайных задач на Leetcode.
В завершение, мы настоятельно рекомендуем How to solve it — великолепный материал для практики решения задач. Подходит как тем, кто изучает компьютерные науки, так и математикам.
Структура и интерпретация компьютерных программ
Львиная доля студентов Computer Science начинают с «вводных курсов» по программированию. Однако такие курсы будут полезны не только новичкам, но и вполне себе специалистам, которые по какой-либо причине пропустили некоторые базовые для программирования вещи.
Мы рекомендуем взять во внимание классическую «Структуру и интерпретацию компьютерных программ». Прочтите как минимум три главы приведенной выше книги, выполняя упражнения для практики. Для тех, кому данная книга кажется слишком сложной, рекомендуется «How to design programs». Тем же, кому она наоборот кажется слишком лёгкой, следует обратить внимание на «Concepts, Techniques, and Models of Computer Programming».
Можно также послушать лекции университета MIT по данной теме. Как альтернативу мы рекомендуем прослушать лекции Брайана Харви из университета Беркли, особенно, если для вас это в новинку.
Для дополнительной практики возьмите на заметку ресурс Exercism: на нём можно найти сотни интересных задачек по программированию, которые помогут вам в освоении синтаксиса разных языков программирования и прокачают ваше логическое мышление, которое необходимо программисту, как воздух.
Compilers: Principles, Techniques and Tools
Большинство программистов изучают языки программирования, в то время как специалисты компьютерных наук пытаются понять, как эти языки работают. Эти знания позволяют им опережать своих коллег по карьерной лестнице и быстрее схватывать новый материал.
Классикой в данном вопросе является Compilers: Principles, Techniques and Tools. К сожалению, этот материал больше подходит учителям, нежели самоучкам. Однако книга отлично подойдёт для непоследовательного чтения, для выхватывания отдельных кусков из материала и изучения по ним. К тому же, если у вас будет учитель, это лишь ускорит ваше обучение.
Если же вы решите учиться по данной книге без учителя, то настоятельно рекомендуем обратить внимание на серию лекций от Алекса Айкена из Стэнфордского университета.
Потенциальной альтернативой этой книге может стать Language Implementation Patterns. Она написана с упором на инженеров, которые собираются практиковаться на языках вроде DSL.
В качестве проекта для закрепления материала можно написать свой компилятор для простенького языка вроде COOL. Те, кому данный проект кажется невыполнимым, могут начать с чего-то вроде Make a Lisp.
Часто задаваемые вопросы
6. Быстрая разработка приложений
Недавняя публикация ресурса PR Newswire позволяет говорить о том, что к 2027 году рынок быстрой разработки приложений (Low Code/No-Code, LCNC) достигнет 65,15 миллиардов долларов, при этом совокупный среднегодовой темп роста превысит показатель в 26,1%. Low Code/No-Code-возможности в сфере веб-разработки поддерживает несколько платформ. Среди них — Microsoft Power Apps, Bubble, OutSystems и Appian.
В 2021 году развитие LCNC-платформ будет представлять собой один из наиболее мощных трендов. В этой сфере можно будет наблюдать множество инноваций и крупных сделок по приобретению одних компаний другими или по слиянию компаний.
Distributed Systems, 3rd Edition by Maarten van Steen
Число компьютеров и их разнообразие увеличилось за последние несколько десятков лет. Если раньше крупные компании закупали огромные сервера для обеспечения работы каких-либо программ, то сегодня нам кажется очевидным тот факт, что даже самые незначительные программы работают на нескольких компьютерах одновременно. Распределённые системы — наука о том, как это обеспечить.
Книга, которую мы хотим посоветовать, — Distributed Systems, третье издание которой служит прекрасным дополнением всем предыдущим. Учитывая то, что распределенные системы — область, которая достаточно часто меняется, нет уникальной книги, которая проведёт вас по этому тернистому пути. Приведённая же выше книга, по нашему мнению, наиболее близка к этому идеалу.
Можно также обратить внимание на серию лекций MIT 6.824, но, к сожалению, качество записи звука оставляет желать лучшего.
Не имеет значения, какую книгу или сторонний ресурс вы выбрали для изучения распределённых систем, погружение в эту область компьютерных наук требует от студента чтения большого количества литературы. Здесь вы можете найти список полезных книг.
Operating Systems: Three Easy Pieces
Лучшая серия лекций: Berkeley CS 162
Operating System Concepts и Modern Operating Systems — классика в вопросе операционных систем. Обе довольно часто подвергались критике в основном за то, что не являются 1000-страничными быстроустаревающими энциклопедиями, новое издание которых приходится покупать каждые пару лет.
Существует ещё одна книга по операционным системам, которую мы также очень рекомендуем к ознакомлению. Three Easy Pieces: структура повествования книги делает её легкой к восприятию, а задания помогут закрепить полученные знания.
После прочтения указанных выше книг имеет смысл пройтись по конкретным операционным системам и прочесть следующее: A commentary on the unix operating system, The design and implementation of the freeBSD operating systems и Mac OS internals.
Идеальный способ закрепить полученные знания — это прочесть код небольшого ядра и внести в него свои изменения. Как вариант можно взять XV6 — современную реализацию 6 версии Unix для архитектуры x86, написанную на ANSI C. В приведённой выше Three Easy Pieces есть раздел с заданиями с XV6, полный интересных идей для потенциальных проектов.
А где же язык X?
Изучение конкретного языка программирования — совершенно другая плоскость, нежели изучение компьютерных наук. Изучение языка программирования — задача наиболее простая и менее ценная. Если вы уже знаете пару-тройку языков, то советуем просто следовать нашему списку дисциплин, оставляя языки на потом. Если вы знаете программирование в целом достаточно хорошо и знаете, как работают компиляторы, вам потребуется не больше недели, чтобы выучить новый язык программирования.
Насколько важно строго следовать порядку, приведенному в статье?
На самом деле, все 9 дисциплин достаточно часто пересекаются. К примеру, возьмите дискретную математику и алгоритмы: изучение математики поможет вам в освоении алгоритмов. Знание алгоритмов, в свою очередь, даст стимул погрузиться в дискретную математику. В идеальном сценарии программист достаточно часто повторяет данный материал в своей карьере.
По существу наша последовательность сконструирована таким образом, чтобы помочь вам начать. Если у вас есть непреодолимое желание следовать другой последовательности, мы не настаиваем. Однако мы считаем, что освоить архитектуру ЭВМ нужно перед освоением операционных систем и баз данных, а компьютерные сети и операционные системы перед распределёнными системами.
Зачем изучать компьютерные науки?
Существует два типа программистов: те, кто владеют компьютерными науками достаточно хорошо, чтобы совершать инновации, и те, кто вроде как что-то могут благодаря знанию пары-тройки высокоуровневых инструментов.
И те и другие называют себя программистами или инженерами программного обеспечения и имеют примерно одинаковые доходы в начале своей карьеры. Однако первые в итоге становятся более высокооплачиваемыми специалистами. Причём абсолютно неважно, работают они над известными, дорогими и большими коммерческими проектами или над инновационными open-source проектами различной сложности. Они становятся лидерами в своей области и привносят нечто большее и более качественное на рынок.
Они углубленно изучают компьютерные науки, читая книги, слушая лекции, практикуясь или же упорно поглощая материал на личном опыте в своей карьере. Вторые же обычно остаются на дне, изучая различные инструменты и технологии для своей работы, а не то, на чём эти технологии основаны. Для них причиной для изучения чего-то нового является появление новых инструментов и, следовательно, устаревание старых.
На данный момент число людей в индустрии постоянно растёт, а число выпускников с факультета компьютерных наук остаётся неизменным. Перенасыщение рынка инженерами второго типа в итоге приводит оных к безработице или к сравнительно дешевому трудоустройству. Вне зависимости от ваших стремлений: хотите вы стать инженером первого типа или просто ищете способ заработать немного денег, изучение Computer Science — единственный надёжный путь для этого.
Авторизация
5. Вычисления, требующие переработки большого количества данных
Несколько лет назад в сфере распределённой пакетной обработки данных, или при проведении вычислений, требующих переработки большого количества данных, стандартным инструментом была платформа Hadoop. Но сейчас, с появлением платформы Apache Spark, её, в большинстве случаев, используют вместо Hadoop. В публикации из блога Towards Data Science сказано, что основное отличие двух этих платформ заключается в производительности. А именно, если речь идёт об обработке данных, хранящихся на дисках, то Spark стабильно показывает производительность, в 10 раз превышающую производительность Hadoop. Если же данные хранятся в памяти — речь идёт о 100-кратном повышении производительности. Более того — платформа Spark создавалась с прицелом на исправление недостатков Hadoop. В результате тренд отказа от Hadoop и перехода на Spark, весьма вероятно, продолжится и в этом году.
Итоги
Индустрия разработки программного обеспечения куда больше, чем рассмотренные в этом материале её части, поэтому за один заход невозможно охватить все важные аспекты этой индустрии. Однако тут представлены несколько значительных трендов, которые способны сыграть очень важную роль в жизни любого программиста. Надеюсь, теперь у вас есть некоторое представление о том, на что стоит обратить внимание в 2021 году.
Как вы думаете, на что ещё программистам стоит обратить внимание в этом году?
Компьютер, прежде всего, победил пишущую машинку, потому что стал думающей, интеллектуальной пишущей машинкой. Он взял все функции старой пишущей машинки и добавил к ним еще одну — он научился прощать людям их ошибки при работе с текстом. А традиционная пишущая машинка им таких ошибок не прощала.
Вначале вообще появились однофункциональные электронные машины — текстовые процессоры. Это были компьютеры, умеющие работать только с текстом. Однако затем появились универсальные ПК, способные выполнять и множество других приложений, обеспечивающие совместимость множества программ, в ряду которых были и собственно текстовые процессоры — программы, позволяющие использовать компьютер для манипуляций с текстом, в том числе и с формулами: печатать текст, переворачивать его как угодно, переставлять слова, предложения, абзацы, вставлять и удалять любые куски текста и знаки препинания и, в конце концов распечатывать текст на бумаге посредством принтера. Самый известный текстовый процессор (то есть самая известная программа для обработки текста и формул) — MS WORD . Есть и другие, например Works, Лексикон.
После возможности обработки текста компьютер получил способность обработки таблиц. Появилась программа MS EXCEL (переводится как "непревзойденный", "превосходный"), появилась программа LOTUS 1-2-3.
От обработки таблиц компьютер перешел к обработке картинок, чертежей, звука и изображения и вообще научился писать и выпускать книги и рисовать целые картины, делать фильмы и обрабатывать музыку. Можно записать свой голос с какими-либо словами, а затем пустить его наоборот, или сделать с эхом, как будто вы находитесь в горах или в пещере, возможны вообще любые манипуляции. Компьютер стал инструментом дизайнера, художника и артиста. Появились программы PageMaker (создание макетов книг и печать), Adobe Photoshop (цветоделение и обработка изображений), Quark Press (верстка периодики), CorelDraw (графический редактор), PowerPoint (разработка сценария и стиля презентаций, слайд-фильмы), FaxLine (факсовая связь), Machaon (факсимильная и почтовая связь и безбумажный документообмен), AutoCAD (черчение и конструирование), Adobe Illustrator (дизайнерство), Corel ArtShow (библиотека иллюстраций, созданных художниками всего мира), всемирно известные браузеры Internet Explorer и Netscape Navigator. Кстати, первая версия Netscape Navigator была создана студентами, устроившимися в бесплатный проект для получения первого опыта. Пришли за опытом — а ушли каждый с новым автомобилем «Порше».
Компьютер научился работать с большими массивами данных (базами данных) посредством таких программ, как, например, MS Access (переводится как "доступ"), Oracle и других СУБД (систем управления базами данных). Он дал возможность конструкторам вообще видеть свои творения почти что наяву — на экране монитора. Не построенный еще дом можно было увидеть «живьем» да еще покрутить его во все стороны, чтобы получше рассмотреть, подняться над ним на любую высоту, войти внутрь и посмотреть на вид из окна (системы ArchiCAD , AutoCAD, MicroStation .
Робот-манипулятор, управляемый американской компьютеризированной хирургической системой ZEUS в Бакулевском институте в Москве произвел без непосредственного участия человека две сложнейшие операции — минимально-инвазивную с использованием искусственного кровообращения и коронарного шунтирования на работающем сердце. Человек (хирург), ведущий операцию, сидит за компьютером и на расстоянии управляет действиями чудо машины. Причем, механический монстр управляется голосом (действует программа распознавания голоса). Скоро станет возможным делать сложнейшие операции в глухих уголках любых стран на расстоянии. Людей будут исцелять машины — и все это благодаря компьютеру.
Компьютер научился развлекать человека. Алексей Пажитнов придумал всемирно известный "тетрис", появились хиты DOOM, DUKE NUKEM, QUAKE, UNREAL, ЦИВИЛИЗАЦИЯ (стратегическая игра с целью построения собственной цивилизации), WARCRAFT (сказочные баталии, сражения), MORTAL KOMBAT (смертельная битва с силами зла и ада), Need for Speed (гонки на автомобилях), SimCity (градостроительная стратегия по созданию справедливого, безопасного и комфортного устройства городской жизни – с точки зрения мэра, властей, горожан), масса авиа- и автосимуляторов, карточные и шахматные программы. Дошло до того, что компьютер Deep Blue («глубокая синева», фирма IBM, США, 1997), вооруженный сильной шахматной программой, обыграл в серии из нескольких партий чемпиона мира Гарри Каспарова.
В совершенствовании будущих ЭВМ видны два пути. На физическом уровне это переход к использованию иных физических принципов построения узлов ЭВМ на основе оптоэлектроники, использующей оптические свойства материалов, на базе которых создаются процессор и оперативная память, и криогенной электроники, использующей сверхпроводящие материалы при очень низких температурах. На уровне совершенствования интеллектуальных способностей машин, отнюдь не всегда определяемых физическими принципами их конструкций, постоянно возникают новые результаты, опирающиеся на принципиально новые подходы к программированию. Уже сегодня ЭВМ выигрывает шахматные партии у чемпиона мира, а ведь совсем недавно это казалось совершенно невозможным. Создание новейших информационных технологий, систем искусственного интеллекта, баз знаний, экспертных систем продолжается в XXI веке.
Наконец, уже сегодня огромную роль играют сети ЭВМ, позволяющие разделить решение задачи между несколькими компьютерами. В недалеком будущем и сетевые технологии обработки информации станут, по-видимому, доминировать, существенно потеснив персональные компьютеры (точнее говоря, интегрировав их в себя).
В будущем можно предполагать наличие сотен активных компьютерных устройств, отслеживающих наше состояние и местоположение, легко воспринимающих нашу информацию и управляющих бытовыми приборами. Они не будут находиться в одной общей «оболочке «, как это устроено сейчас в программируемом пульте дистанционного управления аппаратурой, находящейся в нашей комнате телевизором, видеомагнитофоном, аудиосистемой. В отношении компьютерных устройств подобного рода перспективы развития можно сформулировать таким образом: они станут намного более миниатюрными, портативными и будут иметь низкую стоимость, т.е. станут более доступными.
Каждый компьютер не только умеет правильно и быстро считать, но и представляет собой огромное хранилище информации, созданное человеком. В настоящее время все шире стала использоваться специфическая функция компьютеров — информационная, и именно это является одной из причин наступающей «всеобщей компьютеризации «. Обычно информацию готовят на компьютере, затем печатают и уже в таком виде распространяют.
Однако уже в начале XXI века ожидается смена основной информационной среды — большую часть информации люди станут получать не по традиционным каналам связи — радио, телевидение, печать, а через компьютерные сети.
Постепенно меняется цель использования компьютеров. Прежде компьютеры применяли для различных научно-технических и экономических расчетов и работали на них пользователи с общей компьютерной подготовкой и программисты. Теперь же, благодаря телекоммуникациям, кардинально меняется технология использования компьютеров пользователем. В будущем потребность в компьютерных телекоммуникациях будет расширяться
Компьютер не будет привязан к какому либо специальному помещению, он будет полностью мобильным, снабжен радиомодемом для входа в компьютерную сеть. Прообраз такого компьютера — Note Book .
Для обеспечения доступности общения с компьютером на естественном языке он будет оснащен средствами мультимедиа, в первую очередь аудио- и видеосистемами.
Для обеспечения качественного и повсеместного обмена информацией между компьютерами будут использоваться принципиально новые каналы связи:
инфракрасные каналы в пределах прямой видимости;
телевизионные каналы;
беспроводная технология высокоскоростной цифровой связи на частоте 10 МГц.
Это позволит строить системы сверхскоростных информационных магистралей, связывающих воедино все существующие системы. При обеспечении практически неограниченной пропускной способности передачи информации в перспективе разработка и использование медиасерверов, способных хранить и предоставлять информацию в реальном режиме времени по множеству одновременно приходящих запросов.
Очеловечивание компьютера будет продолжаться, несмотря ни на что. На очереди — управление голосом — голосовой интерфейс и трехмерный интерфейс, а также программы распознавания рукописных текстов, то есть информацию в компьютер можно вводить «от руки» (посредством светового пера либо специальных программ распознавания рукописей). Это, надо думать, требует еще больших ресурсов от аппаратных средств, однако и техника не стоит на месте — намечается замена в процессорах потока электронов потоком фотонов (частиц света), это даст еще большее увеличение мощности и быстродействия работы компьютеров.
Сферы применения ЭВМ все расширяются, и каждая из них обусловливает новую специфическую тенденцию развития компьютерной техники. В перспективе все вычислительные комплексы и системы от суперЭВМ до персонального компьютера будут составляющими единой компьютерной сети. При такой сложной распределенной структуре должна быть обеспечена практически неограниченная пропускная способность и скорость передачи информации.
Разрабатываются и нецифровые компьютеры — нейрокомпьютеры, где информация анализируется не в цифрах, а в логике нервных окончаний. В природе такие функции выполняет мозг человека, который состоит из более чем 10 млрд. нервных клеток- нейронов. Моделирование нейронов и лежит в основе нейрокомпьютеров, разработка которых уже ведется. Нейрокомпьютеры обладают принципиально новым свойством — возможностью самообучения в ходе решения задач. По своей сути нейрокомпьютер является имитацией человеческой нейронной сети (нейрон — основная элементарная ячейка мозга человека). Нейрон взаимодействует с другим нейроном, посылая ему электрический сигнал — нервный импульс. Каждый нейрон связан примерно с 10000 нейронами. По такому же принципу строится память компьютера, где сначала формируется требуемый массив ячеек, а межсоединения осуществляются практически без искажений оптическим образом — в оптическом тракте системы. Магнитооптические управляемые устройства уже сегодня позволяют сформировать массив бинарной информации из 10 4 ячеек, причем скорость обработки его по алгоритму нейронной сети на несколько порядков превосходит возможности человеческого мозга. В начале XXI века можно ожидать, что наша планета будет «покрыта» сетью компьютеров, построенных на распределенной нейронной архитектуре и имеющих микропроцессоры со встроенными средствами связи.
Компьютеры уменьшаются в размерах при возрастании мощности процессора в соответствии с законом Мура. В 1965 году Гордон Мур, впоследствии (в 1968 году) вместе с Бобом Нойсом основавший фирму Intel — мирового лидера производства процессоров, — предсказал, что число транзисторов в компьютерных чипах ежегодно будет удваиваться. Через 10 лет (закон Мура все десять лет неукоснительно соблюдался) удвоение стало происходить каждые два года (точнее каждые 18 месяцев). В соответствии с законом Мура, в 2020 г . компьютеры достигнут мощности человеческого мозга, так как смогут выполнять 20 квадриллионов (т. е. 20 000 000 млрд.) операций в секунду, а к 2060 г ., как считают некоторые футурологи, компьютер сравняется по силе разума со всем человечеством.
Закон Мура, по всей видимости, будет действовать еще лет 20. И тогда вычисления, занимающие сегодня сутки, будут проводиться в 10 000 раз быстрее и потребуют не более 10 секунд. Лаборатории США уже работают с "баллистическими" транзисторами, время переключения которых порядка фемтосекунды, то есть 1/1 000 000 000 000 000 секунды, т.е. такие транзисторы в 10 млн. раз быстрее современных. Вся сложность в том, что необходимо так уменьшить размер чипа и протекающий в нем ток, чтобы движущиеся электроны не сталкивались даже друг с другом.
Следующий этап — создание "одноэлектронного транзистора", в котором единственный бит информации представлен одиночным электроном — это абсолютный предел для низкоэнергетической вычислительной техники. Чтобы воспользоваться преимуществами такого невероятного быстродействия на молекулярном уровне, компьютеры должны стать микроскопическими.
‹ Персональные компьютеры и рабочие станции
Вверх
Принципы фон Неймана работы компьютера ›
Делай то, что ты любишь, деньги придут сами Часть первая: 1976 v 1985 Стив Джобс и С.
Тактильная отдача в Apple Tablet: предполагаемые подробности
Ажиотаж вокруг полумифического планшетника Apple разрастается прямо на глазах: по мнению инсайдеров, новый гаджет изрядно уд.
1. Мультиоблачные среды
Если говорить о компаниях, поддерживающих облачные сервисы для публичного использования, то совершенно очевидно то, какие именно компании являются лидерами рынка. По данным Statista в четвёртом квартале 2020 года лидером рынка облачных услуг с долей в 32% стала платформа Amazon Web Services. Microsoft Azure досталось 20% рынка, а Google Cloud — 9%. В 2021 году, вероятно, эти три ведущих платформы сохранят свои позиции.
Ведущие облачные платформы в 4 квартале 2020 года
И, что интересно, набирают популярность мультиоблачные среды. Несколько компаний движутся в этом направлении. В частности, компания Amazon, ранее без особого энтузиазма относившаяся к мультиоблачным стратегиям, теперь вышла на этот рынок, предложив программистам инструменты для удобного развёртывания приложений в мультиоблачной инфраструктуре.
Популярные
- Найм подходящей компании SEO для вашего бизнеса
- Расширение сотрудничества между Cisco и МГУУ Правительства Москвы
- Перспективы развития компьютерной техники
- Технология шлюзов Oracle. Характеристика продуктов
- Основные направления развития компьютерной индустрии в ближайшем будущем в рамках форума IDF
- Вычислительное ядро
Современные вычислительные машины представляют одно из самых значительных достижений человеческой мысли, влияние которого на развитие научно-технического прогресса трудно переоценить. Области применения ЭВМ непрерывно расширяются. Этому в значительной степени способствует распространение персональных ЭВМ, и особенно микро ЭВМ.
Перспективы развития ЭВМ в первую очередь заложено обязательное уменьшение размеров компьютеров, неуклонное увеличение их быстродействия и объема памяти. Также согласно сегодняшней тенденции, уровень глобальных сетей будет увеличиваться, в связи с этим будут разрабатываться новые методы хранения, обработки, представления информации. Будут совершенствоваться способы передачи информации с учетом скорости, безопасности и качества.
Виртуальная реальность остаётся одним из самых интересных и загадочных понятий компьютерной индустрии. Виртуальная реальность — это образ искусственного мира, моделируемый техническими средствами и передаваемый человеку через ощущения. В данный момент технологии виртуальной реальности широко применяются в различных областях человеческой деятельности.
По словам учёных и исследователей, в ближайшем будущем персональные компьютеры кардинально изменятся. Примерно в 2020-2025 годах должны появиться молекулярные компьютеры, квантовые компьютеры, биокомпьютеры и оптические компьютеры. Компьютер будущего должен облегчить и упростить жизнь человека ещё в десятки раз!
Одна из указанных вероятностных альтернатив замены современных компьютеров является создание оптических ЭВМ, носителем информации в которых будет световой сгусток. Проникновение оптических способов в вычислительную технику ведется по трем фронтам. Первое основано на использовании аналоговых интерференционных оптических вычислений для решения отдельных особых задач, связанных с необходимостью быстрого выполнения интегральных преобразований. Второе направление связно с созданием чисто оптических или гибридных соединений, обладающих большей надежностью, чем электрические. И третье направление – создание компьютера, полностью состоящего из оптических устройств обработки информации.
Другие виды компьютеров – молекулярные. Молекулярные компьютеры – это ЭВМ, использующие вычислительные возможности молекул преимущественно биологических, также используется идея вычислительных возможностей расположения атомов в пространстве. Квантовый компьютер – ЭВМ, которое путем выполнения квантовых алгоритмов существенно использует при работе эффекты, такие как квантовый параллелизм и квантовая запутанность. Нанокомпьютеры – вычислительные устройства на основе электронных технологий с размерами логических элементов порядка нескольких нанометров. Сам компьютер также имеет микроскопические размеры. Другое направление связано с разработками биокомпьютеров – клеточные и ДНК-компьютеры.
Однако квантовые компьютеры, биокомпьютеры, нанокомпьютеры и другие направления – все это на сегодняшний момент всего лишь гипотетические вычислительные устройства, которые под собой не имеют логических решений.
Высокие технологии – это будущее и это успех всего человечества. Ежедневно выпускаются новые и более совершенны модели ЭВМ. И на этом процесс развития не остановлен.
Для большинства программистов Computer Science — факультет в зарубежных вузах, целиком и полностью посвящённый программированию, математике и всему, что связано с разработкой программного обеспечения. К счастью, в современном мире необязательно инвестировать тысячи долларов и 4 года своей жизни в образование, ведь существует бесчисленное множество онлайн-курсов, книг и других ресурсов для изучения компьютерных наук.
Приводить сотни всевозможных материалов для программистов-самоучек мы не будем, а лишь попытаемся ответить на два главных вопроса:
- Какие дисциплины следует изучать и почему?
- Какие из доступных ресурсов, книг, серий лекций для конкретной дисциплины имеет смысл посмотреть?
В качестве ответа приведём список материалов, опубликованный Озаном Онай (Ozan Onay) и Майлзом Бёрном (Myles Byrne) — инструкторами в школе компьютерных наук Брэдфилда в Сан-Франциско. Данная подборка литературы и курсов основана на личном опыте обучения сотен программистов-самоучек.
Распределённые системы
Лучшая книга:
Развитие технологий:
Процессор Pentium MMX
Процессоры Pentium MMX появились несколько позднее, чем следующий тип процессора — Pentium Pro, но для облегчения понимания развития компьютерных технологий сл.
Компания AMD (Advanced Micro Device)
Компания AMD (Advanced Micro Device), основанная в 1969 году в Калифорнии, является одним из крупнейших производителей процессоров. До не столь да.
От истории до новостей
9. Контейнеризация
В IT-индустрии, изначально ориентированной на облачные среды, контейнеризацию можно признать одной из ключевых технологий. Платформа Kubernetes, по сведениям Globe Newswire, занимает 48% рынка. Эта платформа стала ведущим инструментом для оркестрации контейнеров и для управления ими. Причём, это относится и к частным, и к общедоступным облачным системам. Более того, все ведущие поставщики облачных услуг, такие, как Amazon, Microsoft и Google, предоставляют своим клиентам возможность пользоваться Kubernetes.
В этом году нас ждёт продолжение распространения Kubernetes, так как эта платформа является важнейшим ингредиентом мультиоблачных стратегий.
Базы данных
Лучшая книга:
Алгоритмы и структуры данных
Лучшая книга:
7. JavaScript, Python и Java
Мир языков программирования претерпевает значительные изменения. Традиционные «тяжёлые» языки теряют позиции, а языки, больше ориентированные на удобство разработчика, вроде JavaScript, Python и Java, наоборот, остаются популярными.
Языки программирования
Учитывая то, что индустрия разработки программного обеспечения бурно развивается, и то, что к ней постоянно присоединяются новые разработчики, языки, на которых проще и удобнее программировать, будут очень хорошо чувствовать себя в этом году.
Что насчет искусственного интеллекта и графики?
Мы постарались ограничить наш материал списком дисциплин, которым, как нам кажется, любой практикующий инженер должен владеть вне зависимости от специальности и индустрии. С таким фундаментом знаний вы сможете гораздо быстрее схватывать новый материал из книг или сторонних ресурсов. Что касается ИИ и графики, вот наш список рекомендуемых материалов:
- ИИ: пройдите введение в ИИ от университета Беркли и выполните проект Pacman. Прочтите великолепную книгу от Рассела и Новрига Artificial Intelligence: A Modern Approach;
- Машинное обучение: пройдите этот курс на Coursera и убедитесь, что действительно понимаете смысл повествования и основы машинного обучения, прежде чем переходить на Deep Learning;
- Графика: ознакомьтесь с серией лекций из университета Беркли CS184 и прочтите книгу Computer Graphics: Principles and Practice.
3. Квантовые вычисления
Квантовые вычисления — это, без сомнения, самая реформистская технология нынешней эпохи. Эта технология, скорее всего, повлияет на все отрасли экономики. И, по сведениям, опубликованным в IBM Research Blog, в 2023 году компания выпустит процессор IBM Quantum Condor на 1121 кубита.
Для того чтобы понятнее описать перспективы квантовых компьютеров — приведу следующее сравнение. Если представить, что самый совершенный современный суперкомпьютер — это шахматист, или ученик математического класса, оканчивающий среднюю школу, то квантовый компьютер будет гениальным математиком, вроде Эйлера, или шахматистом, который может одновременно играть с полусотней других шахматистов.
Поэтому, учитывая огромные возможности квантовых компьютеров и сильнейший интерес, который испытывает к ним общественность, в 2021 году в сфере квантовых вычислений можно ожидать появления невероятных открытий и прорывных достижений.
Компьютерные сети
Лучшая книга:
2. Блокчейн-технологии
Блокчейн-технологии появились сравнительно недавно. Уже сейчас понятно, что они способны изменить мир. Они используются, например, в криптовалютах. Но эти технологии могут серьёзно трансформировать всю IT-индустрию. Ресурс PR Newswire прогнозирует, что к 2027 году рынок блокчейн-технологий достигнет размеров в 30,7 миллиардов долларов при совокупном среднегодовом темпе роста в 43%. Весьма вероятно то, что в 2021 году эти технологии, в виде механизма смарт-контрактов, будут использоваться в самых разных областях.
История ЭВМ
Computer Networking: A Top-Down Approach
Лучшая серия лекции: Stanford CS 144
Учитывая то, что львиная доля работы у программистов целиком и полностью опирается на веб-сервера, компьютерные сети — одна из самых важных областей компьютерных наук. Программисты-самоучки, которые методично изучают компьютерные сети, хвастают тем, что гораздо лучше многих понимают термины, концепты, протоколы, которыми постоянно окружены в своей карьере.
Наш фаворит в этом вопросе — Computer Networking: A Top-Down Approach. Небольшие проекты и задания для практики на протяжении всего материала весьма интересны и стоят вашего внимания. Также следует обратить внимание на Wireshark labs, любезно предоставленные автором книги.
Для тех же, кто предпочитает просмотр лекций чтению книг, мы рекомендуем серию лекций от университета Стэнфорд Stanford CS 144.
Программирование
Лучшая книга:
Цифровая схемотехника и архитектура компьютера
Лучшая серия лекций: Berkeley CS 61C
Архитектура ЭВМ, также иногда называемая «компьютерными системами» или «организацией компьютера» — достаточно важная тема, описывающая работу аппаратного слоя, который лежит на уровень ниже, чем слой программного обеспечения. Пожалуй, самая недооцененная область среди инженеров-самоучек.
The elements of Computing Systems — амбициозная книга, которая даёт понимание того, как работает компьютер. Каждая глава — строение одной маленькой детали большой системы: от написания логики на HGL (языке описания аппаратуры) через центральный процессор к созданию тетриса.
Мы рекомендуем прочесть как минимум первые 6 глав книги и завершить указанный в ней проект. Это поможет лучше понять отношения между архитектурой компьютера и программным обеспечением, которое на ней работает.
Не ищите простого объяснения сложных вещей в этой книге — автор заходит издалека. Если конкретнее, то в книге, например, почти полностью отсутствуют два очень важных концепта в современной архитектуре ЭВМ — вычислительный конвейер и иерархия памяти.
Как только вы почувствуете себя в своей тарелке, читая эту книгу, смело переходите на Computer Organization And Design, отличный текст, который стал своего рода классикой. Также обратите внимание на курс CS61C, лекции которого доступны онлайн.
Что общего у данного списка с Open Source Society или FreeCodeCamp?
Первый содержит слишком много дисциплин для изучения, предлагает не самые лучшие материалы для большинства из них и не даёт понять, какие аспекты конкретной дисциплины наиболее ценны. Мы же попытались ограничить наш материал списком дисциплин, которые должен знать каждый инженер, вне зависимости от специальности.
Касательно FreeCodeCamp, данный ресурс сконцентрирован на программировании, а не на компьютерных науках.
Дисциплины
Mathematics for Computer Science
В каком-то смысле компьютерные науки — это лишь область прикладной математики. Пока некоторые программисты пытаются и возможно преуспевают в попытках оставаться вдали от математики, мы рекомендуем не уподобляться им и изучать её. Ведь знание математики даст вам значительную фору по сравнению с другими программистами, которые математику игнорируют.
В основе большая часть математики для компьютерных наук — дискретная математика, где слово «дискретная» — прямая противоположность слову «непрерывная» и, грубо говоря, является сборником интересных тем в прикладной математике, за пределами математического анализа. Немного расплывчато, согласны. Впрочем, это не так важно: можно поставить себе цель изучить базовую логику, комбинаторику, теорию вероятности, теорию графов, основы криптографии. Линейная алгебра не менее прочего заслуживает вашего внимания, особенно для изучения компьютерной графики или машинного обучения.
Хорошим началом изучения дискретной математики является сборник лекций от László Lovász. Профессор проделал хорошую работу, чтобы сделать математику понятной и интуитивной, так что его работы куда больше подойдут новичкам, чем формальные математические тексты.
Для большего погружения советуем Mathematics for Computer Science — записи с лекций по одноименному курсу MIT, которые по объёму тянут на полноценную книгу. Видео данных лекций, кстати, тоже в свободном доступе.
Для линейной алгебры мы предлагаем начать с плейлиста Основы линейной алгебры.
Архитектура ЭВМ
Лучшая книга:
Readings in Database Systems
Изучение баз данных требует куда большего упорства, чем нужно для других тем, так как базы данных —относительно новая область компьютерных наук (с 1970-ых). Её основы скрыты от нас по вполне себе понятным коммерческим причинам. К тому же многие потенциальные авторы книг по базам данных предпочли сами стать разработчиками и основали свои компании.
Учитывая приведенные выше обстоятельства, мы настоятельно рекомендуем новичкам избегать книжек и начинать прямиком с записей CS186 весны 2015 от Джо Геллерштейна из университета Беркли. После данного курса уже можно переходить к книжкам.
Одна из них — это Architecture of a Database System от того же профессора из того же университета. Книга даст читателю углубленный взгляд на реляционные базы данных и послужит отличным скелетом для будущих знаний в этой области.
Readings in Database Systems, также известная как красная книга по базам данных (никто не вымирает), представляет собой сборник публикаций по данной теме. Для тех, кто осилил CS186, эта книга может стать следующей остановкой.
Если вы настаиваете на том, чтобы начинать изучение баз данных по книжкам, то советуем обратить внимание на Database management systems.
Сложно закрепить знания в этой области без практики. Студенты CS186 работают над дополнениями для Spark, однако лучшей практикой для начинающих будет всё же написание своей реляционной базы данных с нуля. Скорее всего, она поначалу не будет богата уникальными особенностями, но значительно укрепит ваше понимание темы.
Под конец, моделирование данных — один из самых пренебрегаемых аспектов в изучении баз данных. Здесь нашим фаворитом является Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World.
Читайте также: