Редактирование: Языки программирования, 14 лекция (от 19 октября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
<P STYLE="margin-bottom: 0cm">ЯП 19.10.06</P>
+
== From Ebaums Inc to MurkLoar. ==
-
<P STYLE="margin-bottom: 0cm"><BR>
+
We at EbaumsWorld consider you as disgrace of human race.
-
</P>
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
<P STYLE="margin-bottom: 0cm">Выделили три семантики, пять способов
+
Dig yourself a grave - you will need it.
-
передачи параметров (по значению, по рез-ту, , ссылке, по имени). По
+
-
имени похоже на макроподстановку. Где увозникает при передаче по
+
-
имени: пусть i &ndash; глобальная переменная. Представим, что i
+
-
меняется во времени выполненния программы.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Procedure Swap(i, a[i]) &ndash;
+
-
меняется i, и работает не так.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Самый больщой недостаток: как это
+
-
реализовано.
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Thunk &ndash; небольшие вспомогательные
+
-
программы. При передаче параметров она считала фактический
+
-
параметров. И свой набор thunkов генерируется для каждого отдельного
+
-
вызова, при каждому обращении к формальному параметру, который
+
-
передаётся. Это неэффективно и по памяти, и по времени.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">7-10 раз медленнее Алгол был потому,
+
-
что там была передача по имени.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">//Виртоидные языки программирования.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В виртоидных языках были зафикс способы
+
-
передачи параметров, и была потеряна семантика. В Си++ семантика
+
-
потеряна не была. Там есть передача по ссылке и по константной
+
-
ссылке. Константные объекты можно передавать по кностантной ссылке.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Аде 83 была принята попытка
+
-
разобраться семантика. Решать эффективно-неэффективно доложен решать
+
-
компилятор, а не программист, ибо он лучше знает. Была фиксирована
+
-
семантика, а компилятор выбирает тип передачи сам. Это не прошло. В
+
-
Аде 95 семантика оставлена, но были зафикс способы передачи
+
-
параметрами. Так как проблема с in-out параметрами.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Procedure PP(X, Y : in out T) is</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">X:=e; return Err;</P>
+
-
<P STYLE="margin-bottom: 0cm">y:=e1;</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">На одном компиляторе может работать
+
-
нормально, на другом &ndash; ошибка. Нельзя говорить о переносимости.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">In-out параметры &ndash; параметры,
+
-
изменение которых влечёт за сосбой побочный эффект.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">По определению процедура есть сплошной
+
-
побочный эффект.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Побочный эффект в функциям может
+
-
приводить к трудно
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В 60х годах, когда зверствовал
+
-
радикализм, то гото нельзя использовать, то стричься нельзя.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В 1972 году была статья, почему плохи
+
-
глобальные переменные.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В совр языках типа си шарп и джавыы
+
-
глобальных переменных вообще нет.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">При необъектном стиле программирования
+
-
без глобальных переменных не обойтись.Тогда возникает вопрос,
+
-
допускать или не допускать побочный элемент у функции. В итоге в Аде
+
-
сначала была введена такая классификация:</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<OL>
+
-
<LI><P STYLE="margin-bottom: 0cm">Функции</P>
+
-
<LI><P STYLE="margin-bottom: 0cm">Процедуры\</P>
+
-
<LI><P STYLE="margin-bottom: 0cm">Процедуры, возвращ значение</P>
+
-
</OL>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В окончательном варианте решили
+
-
отказались от такой классиф., ибо в побочный эффект может
+
-
распространяться на глобальные переменные, и это очень сложная
+
-
задача. Поэтому было принято половинчатое решение.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Джава, Си шарп семантика inout
+
-
забыта. Объекты протых типов передаются по значению, оюъекты классов
+
-
по ссылке. Проблема в том, что если мы хотим менять значения
+
-
параметров простых типов. Решением является паковка-рааспаковка.
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Си шарп есть ключевые слова ref и out</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">void P(out T x) { x = 0;}</P>
+
-
<P STYLE="margin-bottom: 0cm">P(out a);</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В си шарп семантика сохранилась.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">П3. Переменный список аргументов.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Хочется, чотбы можно было писать</P>
+
-
<P STYLE="margin-bottom: 0cm">write(x);</P>
+
-
<P STYLE="margin-bottom: 0cm">write(x, y);</P>
+
-
<P STYLE="margin-bottom: 0cm">Связанный с этим вопрос &ndash;
+
-
параметры по умолчанию. P(,,x,y), пропушенные параметры получают
+
-
значения по умолчанию. Подобные вещи мало кому нужны и специфичны, и
+
-
от них лучше отказываться. Во всех виртовских яп поодбного нет.ю В
+
-
джаве нет. В некоторых случаях хочется иметь по крайней мере
+
-
возможнотсь переменный список параметров. Это полезно при консольном
+
-
вводе-выводе.
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">При отказе упрощается контроль
+
-
параметров, но уменьшается гибкость.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Аде переменный список запрещён, но
+
-
есть клбючевые параметры и параметры по умолчанию.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Три языка, в которых они разрешены: Си,
+
-
Си плюс плюс, Си шарп</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В первом варианте Си (КР Си) не было
+
-
переменных списков параметров.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В первых вариантах си тип по умолчанию
+
-
&ndash; инт.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В какой-то старой программе была
+
-
отладочная печать реализована в виде void printf(int a, b, c, d, e,
+
-
f, g, h).</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В файле stdargs.h определены макросы
+
-
va_list, va_start, va_next, va_end. Это очень ненадёжный способ.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В плюсах появились cin cout.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Си шарп если перед параметром стои
+
-
params, он является массивом, и указывается последним в спписке
+
-
параметров.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">В Си шарп есть динамическая идентиф
+
-
типа. Это позволяет окончательно решить</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Функции первого порядка(из Википедии):
+
-
язык их поддерживает, если их можно формировать, их можно загружаьт
+
-
как часть структуры, можно присваивать и можно вызывать.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Функциоальные функции имеют функции
+
-
первого порядка</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Микрософт умеет держать хвост по ветру.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Глава 5. Определние новых типов.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Именно этим и отличаются ЯП друг от
+
-
друга.</P>
+
-
<P STYLE="margin-bottom: 0cm">Почти все позволяют определять, вопрос
+
-
в мощности и защищённости.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
 
+
-
{{Языки Программирования}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы