Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
3 / 3 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
1

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

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

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

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

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

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

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

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

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

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

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

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

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

Критика очень приветствуется!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2017, 22:01
Ответы с готовыми решениями:

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

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

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

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

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

Попросту говоря, эта статья представляет собой набор слов, после прочтения которых у человека, обладающего нулевым уровнем, этот же самый нулевой уровень и останется
2
985 / 729 / 234
Регистрация: 30.06.2015
Сообщений: 3,875
Записей в блоге: 37
17.08.2017, 13:16 8
Лучше учить в своём блоге. На форуме есть такая фича.
Бернард Шоу: Тот, кто умеет, тот делает, кто не умеет, тот учит...
0
Evg
17.08.2017, 13:21
  #9

Не по теме:

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

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

Решение

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

Добавлено через 1 минуту
что ж, спасибо всем за объективную критику(без сарказма). Подобное писать больше не буду
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
17.08.2017, 20:16 11
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Низко\средне\высоко-уровневые
Средний уровень у языков?
0
Эксперт по компьютерным сетямЭксперт NIX
12253 / 7114 / 734
Регистрация: 09.09.2009
Сообщений: 27,785
17.08.2017, 20:36 12
большими буквами задается вопрос:
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Так, что же всё таки такое, это ваше программирование?
после чего льется какая-то вода:
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Вопреки стереотипам, программирование это не какие-то там иероглифы и уже давным-давно не единицы и нули, всё намного проще. Сегодня программирование очень приближено к английскому языку. Вот, например, программа, которая выводит на экран "hello, world!":
Код
print("hello, world!")
Ничего сверхъестественного, как видите, всё просто. Стереотипы снова не совпадают с реальностью
....которая аж ни разу не является ответом на поставленный вопрос.
смысл? графоманство? цель? в прицел не попала?...
0
309 / 177 / 9
Регистрация: 12.05.2015
Сообщений: 274
18.08.2017, 10:23 13
Цитата Сообщение от Profi_GMan Посмотреть сообщение
Компилятор это программа, переводящая (компилирующая) слова (правильней ключевые слова) языков программирования в машинные коды(в исполняемый файл, который можно запустить). Вот так. А вот, что такое интерпретатор: Если же с компилятором что бы запустить вашу программу, нужно её скомпилировать, то интерпретатор выполняет программу, не переводя в машинные коды.
Подробнее об этом вы узнаете в следующих моих уроков.
...
Программа, если она написана на компилируемом языке программирования, то это исполняемый файл, который представляет собой набор машинных кодов и некоторых сведений для операционной системы, если она написана на интерпретируемом, то это просто текстовый файл содержащий код на этом языке
А потом пока еще не разумному человечку показывают компилятор лиспа и он начинае доказывать взрослым людям - что это интерпретатор. Я думал он просто чего-то не понимает, а он оказывается продукт целенапрвленого обучения Это неправильные мёд инеправильные пчелы

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

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

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

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

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

На сем, прошу прощения и откланиваюсь. я уже себя реликтом чуствую. который объясняет что телефоны бывают не только сотовые а булки не растут в магазине
0
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640
18.08.2017, 17:09 18
Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи — мнемокоды — команд и их аргументов.
- Википедия. А кем вы там себя чувствуете, проблема психологов.
0
Модератор
2843 / 2009 / 431
Регистрация: 26.03.2015
Сообщений: 7,723
19.08.2017, 02:59 19
Команды языка ассемблера представляют собой более удобную для компилятора символьную форму записи... А человеку наиболее удобно писать на родном языке.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28031 / 15760 / 977
Регистрация: 15.09.2009
Сообщений: 67,757
Записей в блоге: 78
19.08.2017, 06:24 20
А когда мы уже увидим "часть первую" этого бреда?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2017, 06:24

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru