Регистрация
Напомнить пароль?
Чужой компьютер

   Навигация
Добавить в Избранное
Новости
Анекдоты
Веселые баяны
Прикольные рассказы
Прикольные картинки
Эротический обзор
Эротические рассказы
Тематические картинки
Проза и поэзия
Это интересно
GIF анимация
Микс
Флешки
Видео
--- Кино премьеры
Игры
Музыка
Приколы
Конкурсы
ПОХЕ креатифф
ПОХЕ встречи
Это Я
Мой эфир
Поздравления
Мое творчество
Разное
Обмен опытом
Для админа
Правила сайта
Как добавить новость, картинку, прикол.

Контакты | Реклама



Статейки
RSS лента новостей
Copyright - Копирайты




   Голосование

до 50 кг
50-65
65-70
70-75
75-80
80-85
85-90
90-95
95-100
100-110
110-120
120-130
до 140
до 150
АААААААААААА Я МЕГА ЖИИИИР!!!! ПЫЩъ




   Архив
Декабрь 2020 (2)
Апрель 2020 (6)
Март 2020 (5)
Февраль 2020 (25)
Январь 2020 (4)
Декабрь 2019 (9)


   На правах рекламы
BREXIT
ПРИБЫЛЬ ПОЛУЧИТ ТОТ, КТО НА ШАГ ВПЕРЕДИ
Инвесторы всех масштабов готовят свои капиталы. Селебрити мировой величины нанимают финансовых консультантов. Офисные работники тайком серфят по интернету в поисках стратегий. Каждый, кто хочет добавить нулей к доходам, знает что такое Brexit. Рынок кипит, бурлит, накаляется и готовится к мощному взрыву! Для кого-то — назойливая шумиха в новостях. Для тех, кто помнит события 2016 года, — это способ проснуться богатым.



Как программисты пишут программы?
Для написания программ используются языки программирования, которые разделяют на низкоуровневые, высокоуровневые и сверхвысокоуровневые, а какой из них какой и чем отличается станет ясно чуть позже. Но забегая вперед добавлю, что каждый язык создан для определенных задач и не всегда одну и ту же задачу можно реализовать на разных языках.
Для понятности, буду приводить примеры на бытовых приборах и задачах, с которыми мы сталкиваемся каждый день.
Итак, задача - нарезать хлеб к обеду. Для человека простейшая задача - чего его там резать-то, взял и нарезал, правда?
Самый главный навык программиста, без которого ничего не получится - умение разделять задачу на последовательность действий. Чем ниже уровень языка программирования, тем более детально нужно описывать эту последовательность.
Приведу пример, как выглядела бы программа по нарезке хлеба для нашего тела

Задача "нарезать хлеба" на языке программирования высокого уровня
__1.Открыть правой рукой хлебницу;
__2.Взять булку хлеба правой рукой;
__3.Положить хлеб на разделочную доску; (предположим, что доска уже лежала на столе)
__4.Открыть правой рукой верхний ящик стола;
__5.Найти блестящий нож, длиной 20 см, с черной ручкой;
__6.Взять нож в правую руку;
__7.Поднести нож к хлебу;
__8.Зафиксировать хлеб левой рукой, взявшись за левый край булки;
__9.Расположить нож строго над правым ребром булки хлеба;
__10.Повторять следующие действия 5 раз:
____10.1.Отступить влево на сантиметр;
____10.2.Повторять следующие действия, пока лезвие ножа не не коснется доски:
________10.2.1.Прижать нож к хлебу;
________10.2.2.Совершить ножом возвратно поступательное движение вперед-назад;
____10.3.Поднять нож вверх;
__11.Положить нож в ящик;
__12.Отпустить левой рукой хлеб.
//
Все, программа по нарезке хлеба в количестве пяти кусков готова, можно ее продолжить, описав стирание крошек со стола, укладывания нарезанных кусочков на тарелочку и т.д.

Отладка программы
Запускаем программу и смотрим, как она работает:
Ой... вместе с пятым куском и палец отрезал...
чёрт! остановить программу!
Я же не написал как именно нужно зафиксировать хлеб левой рукой, схватился как попало и большой палец торчал в сторону...
Возвращаемся к строчке "Зафиксировать хлеб левой рукой, взявшись за левый край булки;"
После нее пишем:
"Поджать большой палец левой руки влево, к ладони;"
Запускаем программу
Ой... на строчке "Положить нож в ящик;" нож упал на пол...
Проклятье! оказывается, стол стоит немного под наклоном и ящик сам закрылся...
Возвращаемся к коду и перед строчкой "Положить нож в ящик;" пишем "Открыть правой рукой верхний ящик стола;"
Заметили ошибку? Нет?!
Как мы можем открыть ящик правой рукой, если в этой руке нож? Значит, сначала нужно положить нож на стол, потом открыть ящик, снова взять нож и т.д.
И делаем мы это до тех пор, пока хлеб не будет нарезан как следует, без повреждения мебели и пальцев.
Вот, примерно так происходит отладка
С опытном начинаешь писать программы, которые работают с первого раза, допуская минимум ошибок, а проверка "открыт ли ящик", перед складыванием в него чего-то, входит в привычку.

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

в результате, программа с использованием процедур будет выглядеть так:
__ЗайтиНаКухню();
__НарезатьХлеба(5);
__ПоставитьХлебНаСтол();
__ПомытьПосуду();
и нет предела совершенству

Теперь о языке низкого уровня
на нем пришлось бы описывать эту задачу еще более детально, вплоть до того, какими пальцами и с каким усилием нужно держать нож, что "открыть ящик" - это совершить последовательность действий все той же рукой с использованием кисти, пальцев, мышц предплечья, усилий в килограммах на сантиметр и т.д. Пришлось бы даже описать что такое правая рука, где она находится и не забыть проверить есть ли она вообще в наличии...
Но когда-то, не было и низкоуровневых языков программирования и его писали на машинных кодах, т.е. программа выглядела в виде последовательностей единиц и нулей, это были темные времена.

Стоит немного рассказать что такое высокоуровневый язык и зачем нужен низкоуровневый, если проще писать на высокоуровневом?
Высокоуровневый язык был написан на низкоуровневом, в него были заложены команды, в виде процедур, подразумевающие последовательность действий, таких как "открыть ящик", "взять нож в руку" и т.д. но если по какой-то причине потребуется взять нож только двумя пальцами, потому что ручка сломана или отсутствует, например, то сделать этого не удастся, ибо команда "взять нож в руку" подразумевает использование всех пяти пальцев. Для таких ситуаций в высокоуровневых языках есть возможность делать вставки кода на низкоуровневом языке и вместо стандартной команды "взять нож в руку" пишется код на низком уровне под нож со сломанной ручкой.
Человек все эти операции делает не задумываясь, но машина так не умеет, ей нужно подробно объяснить что, как и в какой последовательности.
Сверхвысокоуровневые языки являются узкоориентированными на определенные задачи, например, для работы на кухне, они включают набор специальных команд и код на них выглядел бы примерно, как программа с использованием процедур, что описана выше.

Вы наверняка сталкивались с тем, что какие-то программы работают только под Windows, например, и их нет под Android или наоборот, хотя функции, казалось бы, обычные, и почему на телефон с Windows Phone нельзя установить Android?
Объясню на примере все той же программы для кухни: в тексте программы сказано "Найти блестящий нож, длиной 20 см, с черной ручкой в верхнем ящике стола", например, это для Windows. Однако, в андройде нет верхнего ящика стола, ножи там хранятся в настенном шкафу, т.е. процедура открытия ящика должна быть заменена на процедуру открытия шкафа, согласитесь - они разные! Но и нож там лежит длиной не 20 см, а в 25, он вовсе не блестящий и ручка у него не черная, а синяя. Поэтому, чтобы нарезать хлеба, нужно существенно переписать программу, хотя результат будет такой же. Для этого существуют кросплатформенные программы, которые могут работать под разными системами, т.е. на разных кухнях, ибо программисты предусмотрели оба варианта. Это, конечно, замечательно, но у них есть и минусы: если у вас всегда используется только кухня с ящиками в столах, то зачем вам код, который умеет работать со шкафами? А место он занимает. Это все равно что купить миркроволновку, у которой в комплекте идут две дверки, одна предназначена для открывания влево, а другая вправо и еще у этой печки есть ниша, в которую можно положить ненужную дверку, но из-за этой ниши микроволновка выше на 10 мс. Вы поставите нужную дверку, а ниша будет занимать место.

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

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

Скопируйте эту формулу в поисковую строку гугла:

exp(-((x-4)^2+(y-4)^2)^2/1000) + exp(-((x +4)^2+(y+4)^2)^2/1000) + 0.1exp(-((x +4)^2+(y+4)^2)^2)+0.1exp(-((x -4)^2+(y-4)^2)^2)


32


1 Автор: Raleks | 6 апреля 2015 11:57 | ICQ: | Группа: ПОХЕрист

Рега: 23.09.2010
Постов: 2
Комментов: 207
Лайков: 0
Классное объяснение! Спасибо автору.

Мне нравится! - 0
2 Автор: Nebuchadnezzar | 6 апреля 2015 13:35 | ICQ: | Группа: ПОХЕрист

Рега: 9.01.2009
Постов: 0
Комментов: 761
Лайков: 1
exp(-((x-4)^2+(y-4)^2)^2/1000) + exp(-((x +4)^2+(y+4)^2)^2/1000) + 0.1exp(-((x +4)^2+(y+4)^2)^2)+0.1exp(-((x -4)^2+(y-4)^2)^2)

если 0,1 поменять 2 раза на 0,2 то они торчибельнее)))

Мне нравится! - 1
3 Автор: gunslinger | 6 апреля 2015 15:11 | ICQ: | Группа: ПОХЕрист

Рега: 11.03.2013
Постов: 0
Комментов: 823
Лайков: 0
za4et

Мне нравится! - 0
4 Автор: Azrail-karatel | 6 апреля 2015 18:21 | ICQ: | Группа: ПОХЕрист

Рега: 4.12.2013
Постов: 0
Комментов: 1
Лайков: 0
Классный пост ... )) автору "прет" ... )))

Мне нравится! - 0
5 Автор: dreka | 6 апреля 2015 19:16 | ICQ: | Группа: ПОХЕрист

Рега: 28.01.2010
Постов: 47
Комментов: 1241
Лайков: 0
что бы понять рекурсию , надо понять рекурсию.

Мне нравится! - 0
6 Автор: Goodwin | 6 апреля 2015 20:39 | ICQ: | Группа: Турбо похерист

Рега: 15.08.2011
Постов: 227
Комментов: 5048
Лайков: 2
Скопируйте эту формулу в поисковую строку гугла:
сверните стрелочкой координаты в нижнем правом углу wink


--------------------

Мне нравится! - 2
7 Автор: Vlad-mir | 6 апреля 2015 23:39 | ICQ: 550259055 | Группа: ПОХЕрист

Рега: 18.12.2007
Постов: 34
Комментов: 9206
Лайков: 0
Цитата: Goodwin
сверните стрелочкой координаты в нижнем правом углу
на фотке сиськи все равно лучше, чем функцией смоделировано - как-то математики схалтурили форму add_02


--------------------

Мне нравится! - 0
8 Автор: kacteh | 7 апреля 2015 00:19 | ICQ: | Группа: ПОХЕрист

Рега: 10.01.2010
Постов: 0
Комментов: 15
Лайков: 0
+1

Nebuchadnezzar,если 0,1 поменять 2 раза на 0,2 то они торчибельнее)))


тоже до этого догадался

Мне нравится! - 0
9 Автор: aelfimov | 7 апреля 2015 15:17 | ICQ: 276147079 | Группа: ПОХЕрист

Рега: 22.01.2007
Постов: 0
Комментов: 8
Лайков: 0
Лажа. Не указано какой стороной ножа резать... Долго дебагить придется

Мне нравится! - 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
   Активные конкурсы

Получить инвайт

   Популярные теги




   Календарь
«    Январь 2021    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

   Рейтинг статей
» С Новым Годом !!!
» Сборка №330


   ТОП Комментаторы
udav udav Набрал лайков: 17451
Goodwin Goodwin Набрал лайков: 14728
Roma_lg Roma_lg Набрал лайков: 13420
Pups Pups Набрал лайков: 8553
monsterhell monsterh... Набрал лайков: 8522
PRIZRAK777 PRIZRAK777 Набрал лайков: 5670
Largo Largo Набрал лайков: 5405
Максимыч Максимыч Набрал лайков: 4411
Порох Порох Набрал лайков: 4200
san_san san_san Набрал лайков: 4000
_Aleks_ _Aleks_ Набрал лайков: 3945
Vlad-mir Vlad-mir Набрал лайков: 3376
310DaySNaKe 310DaySN... Набрал лайков: 3327
alexquentin alexquen... Набрал лайков: 3211
kam kam Набрал лайков: 3188





Все права защищены | All rights reserved
Here

uptime