Компьютер как исполнитель команд программный принцип работы компьютера

Обновлено: 30.06.2024

Разработка компьютерного программного обеспечения — одна из самых быстрорастущих областей карьеры и самых высокооплачиваемых отраслей!

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

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

Kirkwood — доступный вариант! Ежегодно мы предлагаем стипендии на сумму более 3 миллионов долларов. Студенты, участвующие в этой программе, могут иметь право на оплату половины стоимости обучения за счет гранта Кибби.

Выпускники программы разработки программного обеспечения смогут:

  • Объедините декомпозицию, критическое мышление и логические методы со знаниями в области программирования для решения вычислительных задач и разработки алгоритмов.
  • Создавайте проекты реляционных баз данных для удовлетворения потребностей бизнеса в соответствии с принципами эффективности, целостности данных и нормализации.
  • Разделение программных областей на архитектурные слои и объекты по мере необходимости для поддерживаемых, многопользовательских, многоуровневых бизнес-приложений.
  • Используйте распространенную документацию и методы построения диаграмм, чтобы точно отразить потребности пользователей, системные ограничения и бизнес-требования.
  • Умелое использование инструментов программирования, языков, библиотек и справочных ресурсов для кодирования, сборки и запуска приложений.
  • Независимо использовать инструменты и методы тестирования, отладки и рефакторинга программного кода для исправления ошибок и повышения надежности.
  • Работайте продуктивно и ответственно, используя общепринятые профессиональные методы разработки программного обеспечения в группах.
  • Организуйте, обсуждайте и документируйте результаты работы, чтобы четко сообщать о целях, статусе и результатах.
  • Демонстрировать высокую ценность взаимодействия человека с компьютером благодаря ориентированному на варианты использования, устойчивому к ошибкам и интуитивно понятному дизайну пользовательского интерфейса.

Настройте свою степень и улучшите свое резюме с помощью вариантов сертификата Kirkwood. Студенты программы разработки компьютерного программного обеспечения могут специализироваться на:

Стоимость программы

Разработка программного обеспечения для компьютеров

Вступительный семестр программы: осень 2021 г.

< /tr>
СРОК ОСЕНЬ ВЕСНА ИТОГО
Кредиты: 18 15 33
Стоимость обучения: 3348$ 2790$ 6138$
Сборы : 50$ 50$ 100$
Книги: 542,25$< /td> 378,50$ 920,75$

< td>558$
СРОК ЛЕТО ИТОГО
Кредиты: 3 3
Обучение: 558$
Сборы: 50$ 50$
Книги: 103$ 1003$

< /tr>
СРОК ОСЕНЬ ВЕСНА ИТОГО
Кредиты: 16 16 32
Стоимость обучения: 2 976 долларов США 2 976 долларов США 5 952 доллара США
Сборы : 50$ 50$ 100$
Книги: 679,25$< /td> 309$ 988,25$

< /tbody>
ОБЩАЯ РАСЧЕТНАЯ СТОИМОСТЬ 14 910 долларов США

Расходы рассчитаны и основаны на стоимости обучения в штате. Смета стоимости книги указана для новых книг. Индивидуальные расходы могут варьироваться. Эти затраты также не учитывают потенциальные преимущества финансовой помощи. Чтобы получить полное представление о предполагаемой стоимости, воспользуйтесь нашим инструментом оценки стоимости.
Включенные сборы: Плата за технологию
Текущая стоимость обучения за кредитный час: 186 долларов США в штате; 249 долларов США за пределами штата; 372 долл. США
Обновлено: 01.02.2021

Присмотритесь

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

Дополнительная информация

Примеры классов включают:

Сегодня одной из самых быстрорастущих и высокооплачиваемых сфер деятельности является разработка компьютерного программного обеспечения. Если вам нравится работать с компьютерами и вы хотите работать в этой интересной и полезной сфере, A.A.S. Степень от Kirkwood гарантирует, что вы хорошо обучены и готовы к работе.Вы изучите различные этапы разработки программного обеспечения в лабораторной практической программе. Как выпускник, вы будете готовы взяться за дело с первого дня.

Возможности карьерного роста включают:

  • Программист
  • Разработчик программного обеспечения
  • Программист приложений
  • Веб-разработчик
  • Интернет-программист
  • Системный аналитик

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

Вопросы?

Несмотря на то, что были приложены все усилия для соблюдения правил стиля цитирования, могут быть некоторые расхождения. Если у вас есть какие-либо вопросы, обратитесь к соответствующему руководству по стилю или другим источникам.

Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.

iPhone 6< бр />

операционная система (ОС), программа, которая управляет ресурсами компьютера, особенно распределением этих ресурсов среди других программ. Типичные ресурсы включают центральный процессор (ЦП), память компьютера, хранилище файлов, устройства ввода-вывода (I/O) и сетевые подключения. Задачи управления включают планирование использования ресурсов, чтобы избежать конфликтов и помех между программами. В отличие от большинства программ, которые выполняют задачу и завершают работу, операционная система работает бесконечно и завершает работу только при выключении компьютера.

Современные многопроцессорные операционные системы позволяют активировать множество процессов, где каждый процесс представляет собой «поток» вычислений, используемый для выполнения программы. Одна из форм многопроцессорной обработки называется разделением времени, что позволяет многим пользователям совместно использовать доступ к компьютеру, быстро переключаясь между ними. Разделение времени должно защищать от помех между программами пользователей, и в большинстве систем используется виртуальная память, в которой память или «адресное пространство», используемое программой, может находиться во вторичной памяти (например, на магнитном жестком диске), когда не используется в данный момент, чтобы его можно было заменить обратно, чтобы по требованию занять более быструю основную память компьютера. Эта виртуальная память увеличивает адресное пространство, доступное для программы, и помогает предотвратить вмешательство программ друг в друга, но требует тщательного контроля со стороны операционной системы и набора таблиц распределения для отслеживания использования памяти. Пожалуй, самой деликатной и критической задачей для современной операционной системы является выделение центрального процессора; каждому процессу разрешается использовать ЦП в течение ограниченного времени, которое может составлять доли секунды, а затем он должен отказаться от управления и приостановиться до следующего хода. Переключение между процессами само по себе должно использовать ЦП при защите всех данных процессов.

Техник работает с системной консолью на новом компьютере UNIVAC 1100/83 в Центре анализа флота, Corona Annex, Naval Weapons Station, Seal Beach, CA. 1 июня 1981 г. Приводы или считыватели магнитных лент Univac на заднем плане. Универсальный автоматический компьютер

Как Интернет перемещает информацию между компьютерами? Какая операционная система сделана Microsoft? Войдите в этот тест и проверьте свои знания о компьютерах и операционных системах.

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

Компьютеры приобрели более мощные операционные системы в 1960-х годах с появлением разделения времени, которое требовало системы для управления несколькими пользователями, совместно использующими процессорное время и терминалы. Двумя ранними системами разделения времени были CTSS (совместимая система разделения времени), разработанная в Массачусетском технологическом институте, и базовая система Дартмутского колледжа, разработанная в Дартмутском колледже. Другие многопрограммные системы включали Atlas в Манчестерском университете, Англия, и IBM OS/360, вероятно, самый сложный программный пакет 1960-х годов.После 1972 года система Multics для компьютера General Electric Co. GE 645 (а позже и для компьютеров Honeywell Inc.) стала самой сложной системой с большинством возможностей мультипрограммирования и разделения времени, которые позже стали стандартными.

У мини-компьютеров 1970-х годов был ограниченный объем памяти и требовались операционные системы меньшего размера. Самой важной операционной системой того периода была UNIX, разработанная AT&T для больших миникомпьютеров как более простая альтернатива Multics. Он стал широко использоваться в 1980-х годах, отчасти потому, что он был бесплатным для университетов, а отчасти потому, что он был разработан с набором инструментов, которые были мощными в руках опытных программистов. Совсем недавно Linux, версия UNIX с открытым исходным кодом, разработанная частично группой под руководством финского студента информатики Линуса Торвальдса и частично группой под руководством американского программиста Ричарда Столлмана, стала популярной как на персональных компьютерах, так и на большие компьютеры.

Помимо таких систем общего назначения, на небольших компьютерах работают специальные операционные системы, которые управляют сборочными линиями, самолетами и даже бытовой техникой. Это системы реального времени, предназначенные для обеспечения быстрого реагирования на датчики и использования их входных данных для управления механизмами. Операционные системы также были разработаны для мобильных устройств, таких как смартфоны и планшеты. iOS от Apple Inc., работающая на iPhone и iPad, и Android от Google Inc. — две известные мобильные операционные системы.

С точки зрения пользователя или прикладной программы операционная система предоставляет услуги. Некоторые из них представляют собой простые пользовательские команды, такие как «dir» — показать файлы на диске, а другие — низкоуровневые «системные вызовы», которые графическая программа может использовать для отображения изображения. В любом случае операционная система обеспечивает соответствующий доступ к своим объектам, таблицам расположения дисков в одном случае и подпрограммам для передачи данных на экран в другом. Некоторые из его подпрограмм, управляющие процессором и памятью, обычно доступны только другим частям операционной системы.

Современные операционные системы для персональных компьютеров обычно имеют графический интерфейс пользователя (GUI). Графический интерфейс пользователя может быть неотъемлемой частью системы, как в старых версиях Mac OS от Apple и ОС Windows от Microsoft Corporation; в других случаях это набор программ, которые зависят от базовой системы, как в системе X Window для UNIX и Mac OS X от Apple.

Операционные системы также предоставляют сетевые службы и возможности обмена файлами — даже возможность совместного использования ресурсов между системами разных типов, такими как Windows и UNIX. Такое совместное использование стало возможным благодаря внедрению сетевых протоколов (правил связи), таких как TCP/IP в Интернете.

Один из распространенных способов определения языка программирования: "искусственный язык, созданный для того, чтобы кто-то мог давать инструкции компьютеру". Компьютеры не понимают английский, арабский или китайский, и хотя люди технически могут выучить двоичный код (базовый язык компьютеров), почти никто этого не делает. Вот почему нам нужен какой-то промежуточный способ общения, который мы называем языками программирования.

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

Низкоуровневые языки программирования

Изначально, на заре компьютеров, ассемблерный код и двоичный код были основными языками для общения с компьютерами, чтобы просить их выполнять команды путем преобразования данных в единицы и нули; двоичный.

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

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

Но зачем вам в любом случае изучать низкоуровневые языки и низкоуровневое программирование? Причин много, в том числе:

Некоторые части наших операционных систем и даже вирусы написаны на ассемблере.

Если вы хотите заниматься программированием GPU с использованием языков высокого уровня, таких как CUDA или OpenCL, вам необходимо понимать низкоуровневое программирование.

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

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

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

Узнав, как и почему вы можете больше узнать о языках низкого уровня, мы готовы изучить языки высокого уровня.

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

Мы знаем, что компьютер понимает двоичный код, но мы сами этого не понимаем — или понимают лишь немногие люди в мире.

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

Компилятор переводит код, написанный на одном языке программирования, на другой язык программирования.

Первыми языками высокого уровня, разработанными в 50-х годах, были FORTRAN, COBOL и BASIC. Они позволяли задавать программы абстрактно, независимо от точных деталей аппаратной архитектуры компьютера. (Вольфрам, 2002 г.).

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

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

Интерпретатор напрямую выполняет инструкции, написанные на языке программирования, не требуя, чтобы компилятор компилировал их в программу на машинном языке.

Некоторые языки программирования используют как компиляторы, так и интерпретаторы. Если бы вы писали программу на Java в текстовом редакторе, то при ее компиляции с помощью компилятора Java вы фактически создавали бы нечто, называемое байт-кодом. Байт-код можно рассматривать как промежуточный этап между исходным кодом и объектным кодом. Когда компьютер выполняет программу Java, библиотечные программы на этом компьютере интерпретируют байт-код. Это позволяет Java быть независимым от платформы — пользователю нужны правильные библиотеки времени выполнения для Java на его компьютере, чтобы выполнять программы.

В чем разница между языками низкого и высокого уровня?

Основное отличие заключается в том, что программистам легче понять, интерпретировать или скомпилировать язык высокого уровня по сравнению с машинным кодом. С другой стороны, машины могут понимать низкоуровневый язык легче, чем люди. Давайте посмотрим на другие отличия:

Язык высокого уровняЯзык низкого уровня
Язык, удобный для программистаЯзык, удобный для машин
Язык высокого уровня менее эффективно использует памятьЯзык низкого уровня высокая эффективность памяти
Проще отлаживатьОтносительно сложно отлаживать
Проще поддерживатьОтносительно сложный в обслуживании
ПортативныйНе переносимый
Может работать на любая платформаЗависит от машины
Требуется компилятор или интерпретатор для переводаТребуется ассемблер для перевода
Широко используется в программированииВ настоящее время редко используется в программировании

Написание собственных программ/программ

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

Что такое программная инженерия?

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

Давайте рассмотрим различные определения разработки программного обеспечения:

IEEE в своем стандарте 610.12-1990 определяет программную инженерию как применение систематического, упорядоченного, вычислимого подхода к разработке, эксплуатации и обслуживанию программного обеспечения.

Фриц Бауэр определил это как "установление и использование стандартных инженерных принципов. Это помогает вам получить экономичное программное обеспечение, которое является надежным и эффективно работает на реальных машинах".

Бем определяет программную инженерию как «практическое применение научных знаний для творческого проектирования и создания компьютерных программ. Сюда также входит сопутствующая документация, необходимая для их разработки, эксплуатации и обслуживания».

Но включает ли разработка программного обеспечения нечто большее, чем написание кода?

Да, для создания программного обеспечения требуется много шагов, как до, так и после написания кода. Мы называем это жизненным циклом разработки программного обеспечения (SDLC), и он структурирован в виде четко определенной последовательности этапов, что делает процесс проектирования и разработки эффективным. Шаги следующие:

Общение — это первый шаг. Как правило, возможный клиент компании-разработчика программного обеспечения инициирует запрос на желаемый программный продукт.

Сбор требований заключается в попытке получить как можно больше информации о требованиях клиента.

В ходе технико-экономического обоснования команда составляет примерный план процесса разработки программного обеспечения.

Системный анализ — это когда команда проекта анализирует объем проекта и соответствующим образом планирует график и ресурсы.

Проектирование программного обеспечения — это когда команда берет знания из этапов требований и анализа и фактически разрабатывает программный продукт.

На этапе кодирования или программирования команда начинает писать программный код на подходящем языке программирования и эффективно разрабатывает безошибочные исполняемые программы.

Тестирование является важной частью процесса обнаружения и исправления потенциальных ошибок.

Этап интеграции необходим, если программное обеспечение должно интегрироваться с внешними объектами, такими как базы данных или другие программы.

Этап внедрения — это когда новое программное обеспечение готово и фактически установлено на компьютерах пользователей.

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

Каскадная разработка против гибкой разработки

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

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

Agile – это современный передовой метод совместной разработки программного обеспечения между командами и клиентами, который заключается в постоянном планировании, обучении и общении для создания добавочного программного обеспечения, а не сразу в конце проекта. Конечные пользователи (лица, которые фактически будут использовать программное обеспечение) находятся в центре разработки требований и функций, а также их просят тестировать их небольшими порциями на протяжении всего проекта. Таким образом, если ошибка процесса, для которой был разработан продукт, становится очевидной, корректировки можно внести немедленно, прежде чем продолжить сборку. Разбивка процесса на более мелкие части и постоянное тестирование и пакетная интеграция функций программного обеспечения распределяют риски, связанные с инвестициями в разработку, и ускоряют развертывание программного обеспечения для пользователей.

Теперь, когда мы знаем весь процесс создания программного обеспечения, мы вернемся к написанию кода и языкам программирования.

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

Что такое программная IDE?

Software IDE расшифровывается как "интегрированная среда разработки" и представляет собой приложение, которое разработчики используют для создания компьютерных программ. В данном случае "интегрированный" относится к способу объединения нескольких инструментов разработки в одну программу. Например, типичная IDE включает в себя редактор исходного кода, отладчик и компилятор. Большинство IDE также предоставляют интерфейс проекта, который позволяет программистам отслеживать все файлы, связанные с проектом. Многие также поддерживают контроль версий.

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

Существует невероятное количество языков программирования, которые используются программистами, разработчиками программного обеспечения, веб-разработчиками и другими специалистами в области компьютерных наук. Но сколько их на самом деле?

Согласно Википедии, существует около 700 языков программирования, включая эзотерические языки программирования. Другие источники, в которых перечислены только известные языки, по-прежнему насчитывают впечатляющие 245 языков. Другой список, называемый HOPL, который утверждает, что включает все когда-либо существовавшие языки программирования, оценивает их общее число в 8945. По некоторым оценкам, их может быть до 25 000.

Но как выбрать язык программирования для изучения? И можно ли научиться программировать? Ответ - да! Вы можете и должны это делать, поскольку потребность в знании кода для различных профессий возрастает.

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

Если вы хотите, чтобы ваши дети изучали язык, рекомендуется Scratch, а когда вы закончите с ним, вам рекомендуется перейти на Python.

Если вы хотите выучить язык, чтобы получить работу в Facebook или Google, лучшим выбором может быть Python. И бывает, что Python — отличный язык для выбора в целом, так как он считается одним из относительно простых языков для изучения.

Если вы хотите выучить «простой» язык, по мнению разработчиков, вам лучше выбрать Python, Ruby и JavaScript. Эти языки могут дать вам прочную основу для логики и синтаксиса программирования. другой язык будет легче подобрать.

Если вы хотите разрабатывать игры, чаще всего выбирают язык C++.

Если вы хотите кодировать на относительно низком уровне, ваш выбор — C и C++, поскольку они, как правило, компилируются непосредственно на машинный язык используемой платформы. Кроме того, C и C++ позволяют писать так, как это делает большинство машинных кодов (увеличение указателей и т. д.). Rust — новый язык в этой сфере.

Если вы хотите работать над проектами для iPhone, то есть проектами, связанными с iOS, ваш выбор — Swift.

Если вы хотите работать над проектами, связанными с Android, ваш выбор — Java или Kotlin.

Если вас привлекает красота веб-сайтов, высоки шансы, что вам будет интересно изучать код, ориентированный на пользователя (внешняя веб-разработка), и вы выберете язык JavaScript.

Если вас привлекают серверы (внутренняя веб-разработка) и базы данных, вы можете выбрать язык Ruby или Python.

Если вы уже знаете ту часть технического стека, которая вас интересует, вы выберете разработку интерфейса или разработку бэкенда.

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

Что заставило вас заинтересоваться программированием?

Чем вы хотите заниматься как программист?

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

"Программное обеспечение" — это общая категория кода, работающего на оборудовании. Обычный случай — это «программа», такая как Firefox — программное обеспечение, которое вы запускаете на своем компьютере для решения конкретной проблемы. Компьютер может запускать несколько программ одновременно, разделяя их рисование в окнах и т. д., чтобы они, надеюсь, не мешали друг другу. Если оборудование похоже на пианино, то программа подобна музыке.

ЦП понимает низкоуровневый язык "машинного кода" (также известный как "собственный код"). Язык машинного кода встроен в конструкцию аппаратного обеспечения ЦП; это не то, что можно изменить по желанию.Каждое семейство совместимых ЦП (например, очень популярное семейство Intel x86) имеет свой собственный уникальный машинный код, несовместимый с машинным кодом других семейств ЦП. Что означает, что ЦП «запускает» машинный код? Машинный код определяет набор отдельных инструкций. Каждая инструкция машинного кода чрезвычайно примитивна, например, сложение двух чисел или проверка числа меньше нуля. При сохранении каждая инструкция занимает всего несколько байтов. Программа, которая делает что-то полезное, например, отображает изображение или читает электронную почту, представляет собой просто большую последовательность этих очень простых инструкций машинного кода.

Что такое программа

Программа, такая как Firefox, в основном представляет собой файл, содержащий байты инструкций машинного кода программы — файл «.exe» в Windows или файл «app» в Mac OS X. Каждый машинный код инструкция занимает около 4 байтов, а вся последовательность инструкций, по сути, представляет собой просто большой блок байтов. Это первое определение слова "программа", и ниже у нас будет альтернативное определение.

Что такое "Работает"

Когда пользователь дважды щелкает файл программы, чтобы запустить его, байты инструкций, хранящиеся в файле программы, копируются в ОЗУ, а затем ЦП получает указание начать работу с первой инструкции в этой области ОЗУ.

ЦП выполняет инструкции, используя цикл выборки-выполнения: ЦП получает первую инструкцию в последовательности, выполняет ее (добавляя два числа или что-то еще), затем выбирает следующую инструкцию и выполняет ее и так далее. Некоторые инструкции влияют на порядок, в котором ЦП выполняет последовательность инструкций. Например, инструкция может указать ЦП вернуться к более ранней точке в потоке инструкций (таким образом реализуются циклы) или пропустить следующую инструкцию. если определенное условие истинно (условия if реализованы таким образом).

Операционная система

"Операционная система" компьютера подобна первой управляющей программе, которая начинает работать при первом включении компьютера ("загружается"). Операционная система играет невидимую административную и бухгалтерскую роль за кулисами. Когда запускается настольный или портативный компьютер, операционная система обычно приводит все в порядок, а затем запускает программу «Проводник файлов», которая отображает окна и меню и т. д., которые показывают пользователю, какие файловые системы доступны, позволяя пользователю перемещаться и работать с ним. файлы. Операционная система поддерживает порядок в фоновом режиме, так что несколько программ могут работать одновременно, что называется «многозадачностью». Операционная система выделяет каждой программе собственную область памяти, поэтому каждая программа обращается только к своим собственным ресурсам... пытаясь ограничить возможности ошибочной или вредоносной программы. Хранение программ отдельно иногда называют «песочницей»... опосредование доступа каждой программы, чтобы она работала независимо, не мешая другим программам или системе в целом. Точно так же каждая программа имеет некоторый доступ к экрану через окно, но эта область вывода отделена от вывода других программ.

Напоминаем, что файл .exe или что-то еще — это, по сути, просто файл инструкций собственного кода. Когда вы дважды щелкаете программу, операционная система «запускает» программу, выполняя служебные шаги по выделению области памяти в ОЗУ для программы, загружая первый раздел собственного кода программы в эту память и, наконец, указание ЦП начать выполнение этого собственного кода.

Цифровой фотоаппарат — это тоже маленький компьютер. Когда он загружается, он не запускает программу файлового менеджера. Вместо этого, после того как основные настройки настроены, камера может просто запустить одну программу, которая рисует меню и т. д. на экране камеры и реагирует на нажатия кнопок камеры и т. д.

Откуда берутся программы?

Нативный код пишется вручную очень редко. Существует два основных способа создания программ.

1. Старая школа: скомпилированные родные языки

Один из подходов заключается в том, что программист пишет свой код на скомпилированном родном языке. Компьютерные языки C и его производная C++, безусловно, являются самыми популярными такими языками, хотя они относительно примитивны по сравнению с более современными языками (см. ниже).

В качестве примера того, как работают скомпилированные нативные языки, в языке C++ есть понятие "строка", линейный набор символов (код JavaScript также имеет это понятие строк). Машинный код более низкого уровня не работает на таком сложном уровне, как сложная строка. Машинный код работает на уровне простого сложения или сравнения отдельных чисел и все. На языке C++ программист может написать строку вроде ..

Этот код добавляет строку "!" до конца «привет», в результате чего получается строка «привет!» хранится в переменной b. В родном коде ЦП нет такой сложной инструкции, как «дополнение строки».Однако операцию добавления строки можно выполнить с помощью длинной последовательности примитивных собственных инструкций.

Компилятор для языка C++ считывает этот код C++, транслирует и расширяет его до большей последовательности инструкций примитивного машинного кода для реализации последовательности действий, заданной кодом C++. Вывод компилятора — это, по сути, файл программы (.exe или что-то еще), состоящий из множества собственных инструкций, которые реализуют действия, указанные в коде C++. На этапе компиляции создается файл .exe из кода C++, и он завершается. Запуск .exe может произойти позже и является отдельным шагом.

2. Новая школа: динамические языки

Существует широкая категория более современных языков, таких как Java (самый популярный в мире язык, используемый в CS106A), Javascript и Python, в которых не используется компилируемая структура. Вместо того, чтобы работать в формате компиляции в исходный код, эти языки могут быть реализованы с помощью «интерпретатора».

Интерпретатор – это программа, которая считывает код в качестве входных данных и "запускает" введенный код. Интерпретатор проходит через предоставленный ему код, строка за строкой. Для каждой строки интерпретатор деконструирует то, что говорит строка, и выполняет эти действия по частям. Например, Javascript, который мы использовали, реализуется интерпретатором Javascript, встроенным в Firefox.

Так что в Javascript, когда у нас есть такие строки кода:

Интерпретатор запускает этот код, беря строки по одной и для каждой интерпретируя свои действия. Для "а = 1;" интерпретатор резервирует несколько байтов для хранения значения a, а затем сохраняет значение 1 в этих байтах. Тогда для "b = a + 2;" интерпретатор оценивает (a + 2), получая значение 3, резервирует несколько байтов для переменной b, затем сохраняет 3 в байтах b. Компилятор переводит код в машинный код. Интерпретатор просматривает каждую строку кода и выполняет ее в данный момент.

Компилятор и интерпретатор

Компиляция в нативную стратегию делает все заранее. Например, просмотр всего кода C++ и создание блока машинного кода в формате .exe, который полностью реализует то, что указано в коде C++. Во время выполнения у нас есть только .exe; нам не нужен исходный код C++. Невозможно отменить процесс компиляции, начиная с .exe и восстанавливая исходный код C++. Обратное можно сделать только очень ограниченным способом, не создавая полного полезного кода C++ (все комментарии отсутствуют, как первый пример).

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

Нативный скомпилированный код выполняется быстро, потому что многие вопросы — есть ли здесь знак =, имеет ли эта строка дело со строками или числами — все эти вопросы решаются во время компиляции, а не во время работы программы. Напротив, динамический язык решает все эти проблемы во время работы программы, что, по сути, делает динамический код медленнее.

Код JavaScript, который "запускается" интерпретатором, – это еще одна форма программы, которая может выполняться на компьютере. За кулисами интерпретатор сам по себе является программой, например, написанной на C++. Таким образом, мы строим один слой поверх другого. Это работает!

Сильные и слабые стороны динамического языка

У динамических языков есть две основные особенности. (a) они работают намного медленнее, скажем, в 10 раз, как очень грубое практическое правило, чем скомпилированный собственный код. (б) языки, реализованные интерпретаторами, могут иметь значительные удобные для программиста функции, которые невозможны в скомпилированном собственном коде. Лучшим примером является автоматическое управление памятью, которое есть в динамических языках, но в C и C++ программисту приходится решать эту проблему вручную. (Кроме того, многие сбои в программах на C и C++ происходят из-за ошибок в схеме управления памятью программиста. Эту проблему трудно решить вручную.) Поскольку динамические языки, такие как Java и Python, имеют больше возможностей, программист часто может написать код для быстрее решить проблему на динамическом языке, чем на C++. Времени и внимания программистов, как правило, довольно мало (перевод: программистов мало и они дороги, вот почему вы хотите быть майором CS или, по крайней мере, минором!). Следовательно, динамические языки, которые позволяют программисту создавать правильную программу быстрее и надежнее, весьма привлекательны, даже если полученная программа использует больше ЦП и больше ОЗУ. Кроме того, закон Мура в действии делает программиста относительно более дорогим по сравнению с процессором.

В целом разные компьютерные языки имеют разные сильные и слабые стороны, и лучший язык для решения конкретной задачи зависит от ситуации.Как указано выше, динамические языки, такие как Java и Python, могут работать медленнее и, как правило, работать с более высокими накладными расходами, чем код C++, поэтому для некоторых проблем лучше всего писать на C или C++. Кроме того, в Java и Python отсутствуют некоторые функции "низкоуровневого доступа", которые необходимы в редких случаях.

Точный JIT-компилятор

Самая современная форма динамического языка реализуется с помощью интерпретатора в сочетании с компилятором Just In Time (JIT), пытающимся получить лучшее из обоих миров. JIT просматривает разделы динамического кода, которые запускаются очень часто, и для них выполняет компиляцию в собственный код для этого раздела на лету. Таким образом, интерпретатор используется для простых случаев, но для важных разделов динамического кода (например, внутри цикла) JIT создает блок собственного кода для этого раздела. Собственный код запускается для этого раздела динамического кода, обеспечивая производительность, аналогичную C++, и отбрасывается при выходе из программы. Java и Javascript широко используют технологию JIT. Значительное ускорение браузеров за последние несколько лет во многом связано с внедрением технологии JIT для Javascript. JIT стирает большую часть, но не все штрафы «10x». Даже с JIT динамические языки по-прежнему требуют более высоких накладных расходов по сравнению с C и C++.

Программа бакалавриата по информатике

Специализация по компьютерным наукам — это надежная и гибкая программа, направленная на создание прочной основы в принципах вычислений, развитие эффективных математических навыков и навыков решения задач, а также систематическое применение теории при проектировании и разработке программного обеспечения. Эта программа также обеспечивает подготовку к поступлению в аспирантуру в области компьютерных наук. В Metropolitan State необходимо набрать как минимум 16 семестровых кредитов по основным требованиям.

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

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

  • Хорошая основа в этой области благодаря набору основных курсов по дисциплине, включая программирование и структуры данных, аппаратную и программную архитектуру, проектирование программных систем и алгоритмы.
  • Хорошее знание основных математических инструментов, таких как дискретная математика и исчисление.
  • Способность работать в групповых проектах и ​​хорошо общаться посредством письменных и устных презентаций.
  • Знание этических и социальных аспектов использования компьютеров.
  • Хорошее знание объектно-ориентированного языка и практическое знание хотя бы одного другого языка.
  • Благодаря знаниям и навыкам, полученным в рамках этой программы, через несколько лет после выпуска большинство учащихся будут обладать гибкостью, универсальностью и навыками решения проблем, которые можно применить к любой проблемной области, поэтому они будут продуктивно работать в области вычислений в таких ролях, как программист, разработчик программного обеспечения, инженер-программист и аналитик программных систем.
  • Все учащиеся станут ответственными гражданами с сильным чувством социальной и этической ответственности в своей профессиональной деятельности.

Перспективы

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

Следующие выдержки взяты из Справочника по профессиональным перспективам, издание 2010-20 гг. Бюро статистики труда. «Информация. Ожидается, что занятость в информационном секторе вырастет на 4 процента, добавив 118 100 рабочих мест к 2018 году. В этом секторе есть быстрорастущие отрасли, связанные с компьютерами. Индустрия обработки данных, хостинга и сопутствующих услуг, которая, как ожидается, вырастет на 53 процента, включает в себя учреждения, которые предоставляют услуги веб-хостинга и хостинга приложений, а также потоковые услуги. Ожидается, что публикации и вещание в Интернете будут быстро расти по мере того, как они отвоевывают долю рынка у газет и других более традиционных средств массовой информации. Ожидается, что публикация программного обеспечения вырастет на 30 процентов, поскольку организации всех типов продолжают внедрять новейшие программные продукты.» «Две из самых быстрорастущих подробных профессий относятся к группе специалистов по компьютерам. Прогнозируется, что аналитики сетевых систем и передачи данных станут второй по темпам роста профессией в экономике. Спрос на этих работников будет расти, поскольку организации продолжают модернизировать свои информационные технологии и внедрять новейшие технологии. Растущая зависимость от беспроводных сетей приведет к необходимости в большем количестве сетевых систем и аналитиков по передаче данных. Ожидается, что в период с 2008 по 2018 г. число инженеров-программистов компьютерных приложений также будет быстро расти. Развитие интернет-технологий стимулировало спрос на этих работников, которые могут разрабатывать приложения для Интернета, интрасети и веб-приложений».

Образовательные цели программы

Программа призвана помочь выпускникам в достижении следующих карьерных и профессиональных целей. Выпускники программы будут:

Читайте также: