Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Profi_GMan
4 / 4 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5

Что такое программирование? Основные понятия с нуля. Часть 0

16.08.2017, 22:01. Показов 1927. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Часть 0. Как программировать и какие языки программирования существуют
Предисловие
Эти уроки призваны заполнить большой пробел в интернете: рассказать, что такое в принципе программирование и помочь осмыслить некоторые базовые понятия (например, что такое функции) так, чтобы было понятно тем, кто никогда не программировал. Ведь если подумать, нет книги, которую можно было бы посоветовать для полного нуля...

Изначально я хотел написать эти уроки на хабре, но там меня не приняли.

Сразу скажу, что критика очень приветствуется!

Так, что же всё таки такое, это ваше программирование?
Вопреки стереотипам, программирование это не какие-то там иероглифы и уже давным-давно не единицы и нули, всё намного проще. Сегодня программирование очень приближено к английскому языку. Вот, например, программа, которая выводит на экран "hello, world!":
Python
1
print("hello, world!")
Ничего сверхъестественного, как видите, всё просто. Стереотипы снова не совпадают с реальностью

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

Ide
Ide или по-русски среда разработки - это сборка инструментов(программ) для удобства программирования. В неё входят: текстовый редактор со всякими удобствами, компилятор или интерпретатор(про них чуть позже) и ещё несколько компонентов, которые нам пока не нужны. Можно не пользоваться ide, и программировать прямо хоть в блокноте(стандартный текстовый редактор windows), но это не так удобно.

Компилятор или интерпретатор
Как известно, компьютер понимает только единицы и нули(машинные коды), но так программировать очень сложно. Поэтому были созданы языки программирования, которые приближенны к человеческому языку. Но компьютер не понимает наши слова. Как же тогда быть? Чтобы компьютер понял нашу программу надо перевести программу с наших слов в машинные коды.Именно этим и занимается компилятор.Компилятор это программа, переводящая (компилирующая) слова (правильней ключевые слова) языков программирования в машинные коды(в исполняемый файл, который можно запустить). Вот так. А вот, что такое интерпретатор: Если же с компилятором что бы запустить вашу программу, нужно её скомпилировать, то интерпретатор выполняет программу, не переводя в машинные коды.
Подробнее об этом вы узнаете в следующих моих уроков.

Какие языки программирования существуют
Программирование на языках программирования, это, как говорилось ранее, написание ключевых слов(обычно на английском) и символов, вроде (), "", [] и т.д. Каждый язык программирования это свои правила, свои ключевые слова, своя логика, разное предназначение. Некоторые основываются на других, другие созданы с нуля.
Языки программирования имеют две основные характеристики:
Интерпретируемые\компилируемые
Низко\средне\высоко-уровневые

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

Уровень
Ещё одна характеристика языков программирования, это уровень. Что же такое уровень? Грубо говоря, чем ниже уровень языка, тем программирование на нём будет сложнее, тем он ближе к машинным кодам. Чтобы вывести что-то на экран, допустим(это просто пример, в реальности всё может быть по-другому) компьютеру нужно считать из памяти записанную вашу строку из символов, далее для каждого символа найти его изображение(у каждого символа есть свой код, пр которому подбирается изображение)и вывести его на экран. На низкоуровневом языке вам придётся это всё прописывать, а на высокоуровневом вам нужно будет написать всего одну строчку и интерпретатор\компилятор сам проделает\пропишет в исполняемый файл всё это за вас.
Вообще обычно языки программирования разделяют на два уровня, но вообще-то правильней разделять на три, здесь я буду разделять на три.

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

Критика очень приветствуется!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.08.2017, 22:01
Ответы с готовыми решениями:

Программирование. Формулы. Основные понятия. Структуры. Модули
Помогите пожалуйста

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

Основные понятия JavaScript
Доброго времени суток всем кто забрёл в эту тему. Изучаю JavaScript, пытаюсь разобраться в основных категориях: Объект, Функция. ...

23
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
17.08.2017, 05:40
Если картинок добавить, то для детей сгодится. Хотя, я бы в части 0 рассказал бы про сам компьютер, а не про языки программирования. Вы в школе учитесь?
1
 Аватар для Profi_GMan
4 / 4 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
17.08.2017, 09:16  [ТС]
oldnewyear, Я это написал не для детей. Соответственно, я рассчитываю на то, что люди уже знают, что такое компьютер. А подробней про компьютер(как устроена память, как устроен процессор и т.д.) я напишу в дальнейшем.
Вообще, если надо, то и для детей могу написать...
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
17.08.2017, 09:38
ну это уровень 7 класс школы, если честно
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
17.08.2017, 09:47
Profi_GMan, может, не стоит пытаться учить других, если сам еще плаваешь в основах?
0
 Аватар для Profi_GMan
4 / 4 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
17.08.2017, 10:03  [ТС]
oldnewyear, спасибо за отзыв.
Просто я забыл, что в школах учат программированию.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.08.2017, 11:55
Очень напоминает самоучитель по езде на автомобиле, в котором даже ни одной картинки нет. И далее этот самоучитель даётся каким-нибудь папуасам, которые никогда в жизни автомобиль не видели

Попросту говоря, эта статья представляет собой набор слов, после прочтения которых у человека, обладающего нулевым уровнем, этот же самый нулевой уровень и останется
2
 Аватар для CoderHuligan
1744 / 1009 / 257
Регистрация: 30.06.2015
Сообщений: 5,120
Записей в блоге: 56
17.08.2017, 13:16
Лучше учить в своём блоге. На форуме есть такая фича.
Бернард Шоу: Тот, кто умеет, тот делает, кто не умеет, тот учит...
0
Evg
17.08.2017, 13:21

Не по теме:

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Лучше учить в своём блоге
На всякий случай поясню. На форуме есть блог https://www.cyberforum.ru/blog_usercp.php
Ты можешь подобные статьи пихать в свой блог (там будет возможность вносить правки, в отличие от форума)

1
 Аватар для Profi_GMan
4 / 4 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
17.08.2017, 16:07  [ТС]
Лучший ответ Сообщение было отмечено Shamil1 как решение

Решение

Evg, спасибо, не знал

Добавлено через 1 минуту
что ж, спасибо всем за объективную критику(без сарказма). Подобное писать больше не буду
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
17.08.2017, 20:16
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Низко\средне\высоко-уровневые
Средний уровень у языков?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
17.08.2017, 20:36
большими буквами задается вопрос:
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Так, что же всё таки такое, это ваше программирование?
после чего льется какая-то вода:
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Вопреки стереотипам, программирование это не какие-то там иероглифы и уже давным-давно не единицы и нули, всё намного проще. Сегодня программирование очень приближено к английскому языку. Вот, например, программа, которая выводит на экран "hello, world!":
Code
1
print("hello, world!")
Ничего сверхъестественного, как видите, всё просто. Стереотипы снова не совпадают с реальностью
....которая аж ни разу не является ответом на поставленный вопрос.
смысл? графоманство? цель? в прицел не попала?...
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
18.08.2017, 10:23
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Компилятор это программа, переводящая (компилирующая) слова (правильней ключевые слова) языков программирования в машинные коды(в исполняемый файл, который можно запустить). Вот так. А вот, что такое интерпретатор: Если же с компилятором что бы запустить вашу программу, нужно её скомпилировать, то интерпретатор выполняет программу, не переводя в машинные коды.
Подробнее об этом вы узнаете в следующих моих уроков.
...
Программа, если она написана на компилируемом языке программирования, то это исполняемый файл, который представляет собой набор машинных кодов и некоторых сведений для операционной системы, если она написана на интерпретируемом, то это просто текстовый файл содержащий код на этом языке
А потом пока еще не разумному человечку показывают компилятор лиспа и он начинае доказывать взрослым людям - что это интерпретатор. Я думал он просто чего-то не понимает, а он оказывается продукт целенапрвленого обучения Это неправильные мёд инеправильные пчелы

Добавлено через 11 минут
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Чтобы вывести что-то на экран, допустим(это просто пример, в реальности всё может быть по-другому) компьютеру нужно считать из памяти записанную вашу строку из символов, далее для каждого символа найти его изображение(у каждого символа есть свой код, пр которому подбирается изображение)и вывести его на экран. На низкоуровневом языке вам придётся это всё прописывать, а на высокоуровневом вам нужно будет написать всего одну строчку и интерпретатор\компилятор сам проделает\пропишет в исполняемый файл всё это за вас.
Есть такая злая "шутка" как клавиатура для "блондинок". Вот некоторые наборы слов вызывают только ржач. Просто выдают полное непонимание основ

Добавлено через 5 минут
Цитата Сообщение от Luke0208 Посмотреть сообщение
Средний уровень у языков?
Так иногда называют C. Это может иметь смысл если понимать предмет обсуждения
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
18.08.2017, 12:08
Цитата Сообщение от antares0 Посмотреть сообщение
Так иногда называют C. Это может иметь смысл если понимать предмет обсуждения
Как бы там его не называли, так можно говорить с друзьями под пивко. С - высококуровневый язык, да слабой типизацией и битовыми операциями, но это не делает его "средним". Нигде такой терминологии не существует. А статья для новичков же.
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
18.08.2017, 14:45
Цитата Сообщение от Luke0208 Посмотреть сообщение
Нигде такой терминологии не существует.
Ну допустим я прочел об таком особом положении С в одной из своих первых книжек по програмированию. Так насчет "нигде" не соглашаюсь. Плюс к этому, языки высокого уровня - это ЯП третьего поколения. А асэмблеры - 1-ого. Угадай как должны называть ЯП 2-ого поколения?

Добавлено через 10 минут
Цитата Сообщение от Luke0208 Посмотреть сообщение
С - высококуровневый язык,
Получив указатель на функцию, заметь, средствами языка ты можешь манипулировать напрямую машкодом. А если знать типичный адрес BIOS для аппаратной платформы то еще что-нибудь интересное. И в сегодняшней реальности так хулиганить мешает прежде режимы современных процессоров и особености ОС, но отнюдь не язык С сам по себе. А переполнение числовых типов и вобще арифметика напрямую вытекающая из битового представления чисел в памяти. Причем если ты читал описание языка от самих Кернигана и Ритчи - то это все специально а не огрехи компиляторостроителей.
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
18.08.2017, 16:15
Цитата Сообщение от antares0 Посмотреть сообщение
Получив указатель на функцию, заметь, средствами языка ты можешь манипулировать напрямую машкодом. А если знать типичный адрес BIOS для аппаратной платформы то еще что-нибудь интересное. И в сегодняшней реальности так хулиганить мешает прежде режимы современных процессоров и особености ОС, но отнюдь не язык С сам по себе. А переполнение числовых типов и вобще арифметика напрямую вытекающая из битового представления чисел в памяти. Причем если ты читал описание языка от самих Кернигана и Ритчи - то это все специально а не огрехи компиляторостроителей.
Это не делает язык низкоуровенвым. Низкоуровневый язык (ассемблер) это когда одна команда на этом языке соответствует одной команде на маш.коде.
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
18.08.2017, 16:59
Цитата Сообщение от Luke0208 Посмотреть сообщение
Это не делает язык низкоуровенвым.
Вобще мы начали с того назвали С языком среднегр уровня. И он к слову напрямую манипулирует машинными ячейками памяти с совсеми аппаратаными заморочками битового кодирования. И несет черты языков написаных на макроасэмблере.

Добавлено через 4 минуты
Цитата Сообщение от Luke0208 Посмотреть сообщение
Низкоуровневый язык (ассемблер) это когда одна команда на этом языке
Он просто машинно-зависимый. А что во что кодируется зависит от многих причин.

Добавлено через 8 минут
Цитата Сообщение от Luke0208 Посмотреть сообщение
одной команде на маш.коде.
Нет, понимаешь, такого точного понятия Одна команда. Одна мнемоника асэмблера может быть а вот в какие байты маш. кода она переведтся это уже зависит

На сем, прошу прощения и откланиваюсь. я уже себя реликтом чуствую. который объясняет что телефоны бывают не только сотовые а булки не растут в магазине
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
18.08.2017, 17:09
Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи — мнемокоды — команд и их аргументов.
- Википедия. А кем вы там себя чувствуете, проблема психологов.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
19.08.2017, 02:59
Команды языка ассемблера представляют собой более удобную для компилятора символьную форму записи... А человеку наиболее удобно писать на родном языке.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
19.08.2017, 06:24
А когда мы уже увидим "часть первую" этого бреда?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2017, 06:24
Помогаю со студенческими работами здесь

Основные понятия алгебры логики
Здравствуйте уважаемые пользователи этого форума! Необходима ваша помощь очень срочно по алгебре логике ><

Основные понятия языка Pascal
Основные понятия языка Pascal: переменная,оператор,тьип данных Решите плисссссс отблагодарю

Основные понятия и приемы программирования
Помогите ответить на вопросы по С#. 1)Создание объектов.Понятия ссылки. 2)Массивы:одномерные,многомерные,непрерывные,массивы объектов. ...

Основные понятия теории множество
Помогите, прошу, ответить на несколько вопросов . Для какого отношения p всегда выполняется условие p = p–1? 8. Для какого...

основные понятия логики высказываний
Помогите с мат. лог. не дружу с ней:cry: ((((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru