﻿define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/head &#187; edu</title>
	<atom:link href="http://devhead.ru/cat/edu/feed" rel="self" type="application/rss+xml" />
	<link>http://devhead.ru</link>
	<description>Статьи и видео уроки</description>
	<lastBuildDate>Mon, 30 Jan 2017 11:12:34 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.37</generator>
	<item>
		<title>Введение в Common Lisp: Основы языка и работа со списками</title>
		<link>http://devhead.ru/read/vvedenie-v-common-lisp-osnovy-yazyka-i-rabota-so-spiskami</link>
		<comments>http://devhead.ru/read/vvedenie-v-common-lisp-osnovy-yazyka-i-rabota-so-spiskami#comments</comments>
		<pubDate>Tue, 14 Dec 2010 08:54:04 +0000</pubDate>
		<dc:creator><![CDATA[ignusius]]></dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[common lisp]]></category>
		<category><![CDATA[edu]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://devhead.ru/?p=879</guid>
		<description><![CDATA[Вот и готова новая статья по основам языка Lisp, старался сделать всё довольно  кратко. Перед прочтением этой статьи советую прочитать Введение в Common Lisp: Установка и первый запуск . Я изложил более компактное содержание нескольких глав книги "МИР ЛИСПА. Т.1" Символы могут состоять из букв, цифр, других знаков. Также символы могут быть как и строчные, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Вот и готова новая статья по основам языка Lisp, старался сделать всё довольно  кратко. Перед прочтением этой статьи советую прочитать <a href='http://devhead.ru/read/vvedenie-v-common-lisp-ustanovka-i-pervyj-zapusk'>Введение в Common Lisp: Установка и первый запуск</a> . Я изложил более компактное содержание нескольких глав книги <strong>"МИР ЛИСПА. Т.1"</strong></p>
<p><span id="more-879"></span></p>
<p>Символы могут состоять из букв, цифр, других знаков. Также символы могут быть как и строчные, так и прописные. Lisp, прописные и строчные буквы отождествляются  и представляются прописными буквами:</p>
<blockquote><p>devhead.ru &lt;=&gt;  DEVHEAD.RU</p></blockquote>
<p>На ряду с символами используются числа:</p>
<blockquote>
<p>123 ; Целое число</p>
<p>12.3 ; Десятичное число</p>
<p>1.23Е4 ; число, представленное мантиссой и порядком</p>
</blockquote>
<h4><strong>Логические значения</strong></h4>
<p>Логические значения True и False, нам известны из многих языков программирования, но в место привычных значений в Лиспе используют T и NIL.</p>
<blockquote>
<p>T &lt;== True (истина)</p>
<p>NIL &lt;== False (ложь)</p>
</blockquote>
<h4>Построение списков из атомов и подсписков</h4>
<p>Символы и числа представляют собой те простейшие объекты Лиспа, из которых строятся остальные структуры. Поэтому их называют атомами (atom).  Списки являются основными типами данных в языке Лисп, списки могут содержать атомы, а могут и содержать и другие списки, списки заключаются в круглые скобки:</p>
<blockquote>
<p>(a b (c d)e) ; Список состоит из 3 символов и одного подсписка, который состоит из 2 символов.</p>
<p>() ; Пустой список</p>
<p>(NIL) ; пустой список</p>
</blockquote>
<p>Атомы и списки называются символьными выражениями или <em><strong>s-выражениями</strong></em>.</p>
<p><strong>Лисп в качестве калькулятора :)</strong></p>
<p>Когда пользователь заканчивает ввод какого нибудь выражения, то интерпретатор вычисляет<strong> evaluate</strong> (eval)  и выдает значение этого выражения.</p>
<p>Например:</p>
<blockquote>
<p>&gt;&gt;(+ 2 2)</p>
<p>4</p>
<p>&gt;&gt;(- 3 2)</p>
<p>1</p>
<p>&gt;&gt;(* 3 3)</p>
<p>9</p>
<p>&gt;&gt;(/ 6 2)</p>
<p>3</p>
<p>&gt;&gt;(/ 6.0 2.5) ; Вычисления с десятичными числами</p>
<p>2.3999999999999999</p>
<p>&gt;&gt;(+ (* 3 2)(+ 2 2))</p>
<p>10</p>
</blockquote>
<p><strong>QUOTE блокирует вычисление выражения</strong></p>
<p>Например:</p>
<blockquote>
<p>&gt;&gt;(quote (+ 2 3))</p>
<p>(+ 2 3)</p>
<p>&gt;&gt;'(+ 2 3)</p>
<p>(+ 2 3)</p>
</blockquote>
<p>Апостроф перед выражением является сделан для упрощения  и эквивалентен QUOTE.</p>
<h3>Работа со списками</h3>
<p>Первый элемент списка называют головой, а остаток от списка хвостом.<strong> </strong></p>
<blockquote><p>'(голова хвост хвост хвост)</p></blockquote>
<p><strong>CAR</strong> функция возвращает головную часть списка:</p>
<blockquote>
<p>&gt;&gt;(CAR '(голова хвост хвост хвост))</p>
<p>ГОЛОВА</p>
</blockquote>
<p><strong>CDR</strong> функция возвращает хвост списка:</p>
<blockquote>
<p>&gt;&gt;(CDR '(голова хвост хвост хвост))</p>
<p>(ХВОСТ ХВОСТ ХВОСТ)</p>
</blockquote>
<p><strong>LAST</strong> - последний элемент из списка</p>
<blockquote>
<p>&gt;&gt;(LAST '(test hello))</p>
<p>HELLO</p>
</blockquote>
<p><strong>NTH</strong> более простая и наглядная функция извлечения из списка.</p>
<blockquote>
<p>&gt;&gt;(NTH 1'(голова хвост хвост хвост)) ; извлекаем второй элемент</p>
<p>ХВОСТ</p>
<p>&gt;&gt;(NTH 0'(голова хвост хвост хвост)) ; извлекаем первый элемент</p>
<p>ГОЛОВА</p>
</blockquote>
<p><em><span style="color: #ff0000;">Функция CAR,CDR и NTH имеет смысл только для аргументов, являющихся списками.</span></em></p>
<p><strong>CONS </strong> функция включает новый элемент вначало списка.</p>
<blockquote>
<p>&gt;&gt;(CONS 'голова '(хвост хвост))</p>
<p>(ГОЛОВА ХВОСТ ХВОСТ)</p>
</blockquote>
<p><strong>АТОМ</strong> проверяет, является ли аргумент атомом.</p>
<blockquote>
<p>&gt;&gt;(ATOM 'атом) ; Это атом</p>
<p>T  &gt;&gt;</p>
<p>(ATOM '(голова хвост)) ; Это не атом</p>
<p>NIL</p>
</blockquote>
<p><strong>NULL </strong>проверка на пустой список</p>
<blockquote>
<p>&gt;&gt;(NILL '())</p>
<p>T</p>
<p>&gt;&gt;(NILL '(test test))</p>
<p>NIL</p>
</blockquote>
<p><strong>LIST </strong>создает список из элементов</p>
<blockquote>
<p>&gt;&gt;(LIST  1 2 3)</p>
<p>(1 2 3)</p>
<p>&gt;&gt;(LIST 'test  '(hello))</p>
<p>(TEST (HELLO))</p>
</blockquote>
<p><strong>EQ</strong> сравнивает два синвола и если они равны, возвращает T, а иначе NIL.</p>
<blockquote>
<p>&gt;&gt;(EQ 't 't)</p>
<p>T</p>
<p>&gt;&gt;(EQ 'test (car '(test test1)))</p>
<p>T</p>
</blockquote>
<p><strong>EQL</strong> сравнивает числа одинаковых типов:</p>
<blockquote>
<p>&gt;&gt;(EQL 1 1)</p>
<p>T</p>
<p>&gt;&gt;(EQL 1.0 1.0)</p>
<p>T</p>
<p>&gt;&gt;(EQL 1  1.0) ; числа разных типов  NIL</p>
</blockquote>
<p>Чтобы сравнить числа с разными типами, то нужно воспользоваться :</p>
<blockquote>
<p>&gt;&gt;(= 1  1.0)</p>
<p>T</p>
</blockquote>
<p><strong>EQUAL</strong> может сравнивать записи:</p>
<blockquote>
<p>&gt;&gt;(equal  'test 'test)</p>
<p>T</p>
<p>&gt;&gt;(equal  '(test test1) '(test test1))</p>
<p>T</p>
</blockquote>
<p><strong>EQUALP</strong> проверяет любое логическое равенство, но при этом он для этого требуется на много больше вычислений, в следствии чего падает быстродействие.</p>
<blockquote>
<p>&gt;&gt;(equalp  '(test test1) '(test test1))</p>
<p>T</p>
<p>&gt;&gt;(equalp 2 2.0)</p>
<p>T</p>
</blockquote>
<h4>Ссылки</h4>
<p><a href='http://devhead.ru/read/vvedenie-v-common-lisp-ustanovka-i-pervyj-zapusk'>Введение в Common Lisp: Установка и первый запуск</a></p>
<p><a href="http://lisp.ru/">http://lisp.ru/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://devhead.ru/read/vvedenie-v-common-lisp-osnovy-yazyka-i-rabota-so-spiskami/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Введение в Common Lisp: Установка и первый запуск</title>
		<link>http://devhead.ru/read/vvedenie-v-common-lisp-ustanovka-i-pervyj-zapusk</link>
		<comments>http://devhead.ru/read/vvedenie-v-common-lisp-ustanovka-i-pervyj-zapusk#comments</comments>
		<pubDate>Mon, 13 Dec 2010 22:14:34 +0000</pubDate>
		<dc:creator><![CDATA[ignusius]]></dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[common lisp]]></category>
		<category><![CDATA[edu]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://devhead.ru/?p=845</guid>
		<description><![CDATA[Около года назад, я заинтересовался языком программирования Lisp, по ряду причин,  одна из самых веских это эффективное использование GNU Emacs. Представляю вашему вниманию ряд статей, которые будут писаться в зависиости от моего свободного времени. Почему Common Lisp, а не Emacs Lisp? Я посчитал, что лучше дать более общее представление о Лиспе, чем более узкое.  Common Lisp — диалект [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Около года назад, я заинтересовался языком программирования Lisp, по ряду причин,  одна из самых веских это эффективное использование GNU Emacs. Представляю вашему вниманию ряд статей, которые будут писаться в зависиости от моего свободного времени. Почему Common Lisp, а не Emacs Lisp? Я посчитал, что лучше дать более общее представление о Лиспе, чем более узкое. <span id="more-845"></span> <strong>Common Lisp</strong> — диалект языка Лисп, стандартизированный ANSI. Разработанный с целью привести к общему знаменателю множество существовавших на тот момент диалектов Лиспа, является скорее стандартом языка, нежели отдельной реализацией. Доступно несколько реализаций Common Lisp, как коммерческих, так и свободно распространяемых.Common Lisp включает в себя CLOS; систему Lisp макросов, позволяющую вводить в язык новые синтаксические конструкции, использовать техники метапрограммирования и обобщённого программирования.</p>
<h3>Установка</h3>
<h4>Ubuntu</h4>
<p>Мы будем использовать GNU Common Lisp(GCL), для того, чтобы его установить воспользуемся <em><span style="color: #0000ff">Центр приложений Ubuntu.</span></em></p>
<p><em><span style="color: #0000ff"><br /></span></em></p>
<p><em><span style="color: #0000ff"> </span></em> <a href="../../wp-content/uploads/2010/12/Centr-prilozhenij-Ubuntu_002.png"><img class="size-full wp-image-847 alignleft" src="../../wp-content/uploads/2010/12/Centr-prilozhenij-Ubuntu_002.png" height="318" width="523" /></a></p>
<p>или выполнив команду в терминале:</p>
<blockquote><p>sudo apt-get install gcl</p></blockquote>
<h4>Windows</h4>
<p>Версию для Windows можно скачать по <a href="http://ftp.gnu.org/gnu/gcl/">этому адресу</a></p>
<p><a href="http://ftp.gnu.org/pub/gnu/gcl/gcl_2.6.7.mingw32_ansi_japi_20080106.exe">Прямая ссылка на версию 2.6.7 </a> <a href="../../wp-content/uploads/2010/12/NoName.bmp"><img class="aligncenter size-full wp-image-858" src="../../wp-content/uploads/2010/12/NoName.bmp" /></a></p>
<pre><span style="color: #ff0000">Далее как обычная установка программы, я думаю, что тут нет не чего сложного.</span></pre>
<h3>Первый запуск</h3>
<h4>Ubuntu</h4>
<p><em>Приложения --&gt; Стандартные--&gt;Терминал</em> В открытом окне пишем:</p>
<blockquote><p>gcl</p></blockquote>
<p>Получаем окно с приглашением Lisp:</p>
<h4 style="text-align: left"><a href="../../wp-content/uploads/2010/12/Terminal_003.png"><img class="aligncenter size-full wp-image-855" src="../../wp-content/uploads/2010/12/Terminal_003.png" height="326" width="460" /></a></h4>
<h4 style="text-align: left">Windows</h4>
<p style="text-align: left">Нажимаем "Пуск" и выбираем "Все программы", далее как на скриншоте.</p>
<p style="text-align: left"><a href="../../wp-content/uploads/2010/12/NoName1.bmp"><img class="aligncenter size-full wp-image-859" src="../../wp-content/uploads/2010/12/NoName1.bmp" height="387" width="470" /></a></p>
<p>Нажимаем на GNU Common Lisp и  увидите окно с приглашение Lisp:</p>
<h3><a href="../../wp-content/uploads/2010/12/NoName2.bmp"><img class="aligncenter size-full wp-image-860" src="../../wp-content/uploads/2010/12/NoName2.bmp" height="275" width="545" /></a></h3>
<h5><span style="background-color: #ffffff;color: #ff0000">Мы сделали первый шаг в язык программирования Lisp, я думаю что это язык не на столько сложный, как кажется на первый взгляд, т.ч постараюс</span><span style="background-color: #ffffff;color: #ff0000">ь излагать довольно просто, даже для обычного обывателя!</span></h5>
<div class="read-title"></div>
<h3>Ссылки</h3>
<div class="read-title"><a href='http://devhead.ru/read/vvedenie-v-common-lisp-osnovy-yazyka-i-rabota-so-spiskami'>Введение в Common Lisp: Основы языка и работа со списками</a></div>
]]></content:encoded>
			<wfw:commentRss>http://devhead.ru/read/vvedenie-v-common-lisp-ustanovka-i-pervyj-zapusk/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->