Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2016, 17:24   #1
Dalinna
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 4
Восклицание Лиспоподобная парадигма????

Здравствуйте!

Было задано задание ответить на вопрос (на 2-х листах)-"Выделить в лиспоподобной парадигме слишком упрощенные аспекты в ней,объяснить современное развитие этих парадигм".
Нигде не могу найти информацию,учебника нет.Кто знает,где можно хоть что- то найти по этой теме?Бросьте,пожалуйста,ссылку или объясните от себя,буду благодарна за любую помощь!
Dalinna вне форума Ответить с цитированием
Старый 06.11.2016, 17:42   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Так тебе информация по ЛИСП нужна? А ну посмотри здесь (в 1-й лекции и литература представлена):

https://www.youtube.com/watch?v=Mqo_...5TfCpsIqjt6g_e

p.s.: посмотри и скажи, что ты думаешь?
ura_111 вне форума Ответить с цитированием
Старый 06.11.2016, 17:45   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот ещё что то интересное:


1.jpg
ura_111 вне форума Ответить с цитированием
Старый 06.11.2016, 17:47   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я язык не знаю, но может тебе в Википедии почитать (для начала):

2.jpg


/___________________________________ ___________________________________ ___________________________

Короче, если б я искал эту информацию, то сначала бы поискал функциональную парадигму ( чем отличается от остальных). Потом почитай про язык ЛИСП....

/___________________________________ ___________________________________ ___________________________


пИШИ, ЧТО ДУМАЕШЬ.

Последний раз редактировалось ura_111; 06.11.2016 в 17:54.
ura_111 вне форума Ответить с цитированием
Старый 06.11.2016, 17:58   #5
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Сообщений: 355
По умолчанию

Есть книга" Э.Хювёнен, И.Сеппянен. МИР ЛИСПА. Т.1: ВВЕДЕНИЕ В ЯЗЫК ЛИСП И ФУНКЦИОНАЛЬНОЕ. ПРОГРАММИРОВАНИЕ." Двухтомник финских специалистов, содержащий введение в язык Лисп,
мой блог :patreon.com/hopkins1988 . facebook группы:"программирование на Андроид","
"Программирование чистый код"
Lektorfuja вне форума Ответить с цитированием
Старый 06.11.2016, 18:05   #6
Dalinna
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 4
По умолчанию

Спасибо большое!Википедию я уже "прошерстила"))Пошла теперь по вашим ссылкам.Спасибо за информацию и уделенное мне время)
Dalinna вне форума Ответить с цитированием
Старый 06.11.2016, 18:07   #7
Dalinna
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 4
По умолчанию

Спасибо большое,но двухтомник за неделю не осилить...(((
Dalinna вне форума Ответить с цитированием
Старый 06.11.2016, 18:15   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Не знаем с чего начать начнём с определений.

Вот что написано в википедии.
Цитата:
Паради́гма программи́рования — это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером[1].

Важно отметить, что парадигма программирования не определяется однозначно языком программирования; практически все современные языки программирования в той или иной мере допускают использование различных парадигм (мультипарадигмальное программирование). Так, на языке Си, который не является объектно-ориентированным, можно работать в соответствии с принципами объектно-ориентированного программирования, хотя это и сопряжено с определёнными сложностями; функциональное программирование можно применять при работе на любом императивном языке, в котором имеются функции, и т. д.
Что такое парадигма? Прежде чем ответить на этот вопрос я приведу несколько цитат известных авторов:

Липпман C++ для начинающих:
Цитата:
Программы, которые мы пишем, имеют два основных аспекта:
набор алгоритмов;
набор данных, которыми оперируют.
Эти два аспекта оставались неизменными за всю недолгую историю программирования,
зато отношения между ними (парадигма программирования) менялись. .
В процедурной парадигме программирования задача непосредственно моделируется
набором алгоритмов. Возьмем, к примеру, систему выдачи книг в библиотеке. В ней
реализуются две главные процедуры: процедура выдачи книг и процедура приема книг.
Данные хранятся отдельно и передаются этим процедурам как параметры. К наиболее
известным процедурным языкам программирования относятся FORTRAN, C и Pascal.
С++ также поддерживает процедурное программирование. Отдельные процедуры носят в
этом языке название функций. В части III рассматривается поддержка, предоставляемая в
С++ процедурной парадигме программирования: функции, шаблоны функций,
обобщенные алгоритмы.
В 70-е годы процедурную парадигму стала вытеснять парадигма абстрактных типов
данных (теперь чаще называемая объектным подходом). В рамках этой парадигмы задача
моделируется набором абстракций данных. В С++ эти абстракции получили название
классов. Наша библиотечная система могла бы быть представлена как взаимоотношения
объектов различных классов, представляющих книги, читателей, даты возврата и т.п.
Алгоритмы, реализуемые каждым классом, называются открытым интерфейсом класса.
Данные “скрыты” внутри объектов класса. Парадигму абстрактных типов данных
поддерживают такие языки, как CLU, Ada и Modula-2. В части IV обсуждаются вопросы
поддержки этой парадигмы языком С++.
Объектно-ориентированное программирование расширяет парадигму абстрактных типов
данных механизмом наследования (повторного использования существующих объектов) и
динамического связывания (повторного использования существующих интерфейсов).
Вводятся отношения тип-подтип. Книга, видеокассета, компакт-диск – все они хранятся в
библиотеке, и поэтому могут быть названы подтипами (или подклассами) одного
родительского типа, представляющего то, что может храниться в библиотеке. Хотя
каждый из классов способен реализовывать свой собственный алгоритм выдачи и
возврата, открытый интерфейс для них одинаков. Три наиболее известных языка,
поддерживающие объектно-ориентированный подход, – это Simula, Smalltalk и Java. В
части V рассматриваются вопросы поддержки парадигмы объектно-ориентированного
программирования в С++.
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
АЛГОРИТМЫ ПОСТРОЕНИЕ И АНАЛИЗ:
Цитата:
Метод декомпозиции
Многие полезные алгоритмы имеют рекурсивную структуру: для решения дан-
ной задачи они рекурсивно вызывают сами себя один или несколько раз, чтобы
решить вспомогательную задачу, имеющую непосредственное отношение к по-
ставленной задаче. Такие алгоритмы зачастую разрабатываются с помощью мето-
да декомпозиции, или разбиения: сложная задача разбивается на несколько более
простых, которые подобны исходной задаче, но имеют меньший объем; далее эти
вспомогательные задачи решаются рекурсивным методом, после чего полученные
решения комбинируются с целью получить решение исходной задачи.
Парадигма, лежащая в основе метода декомпозиции "разделяй и властвуй", на
каждом уровне рекурсии включает в себя три этапа.
Разделение задачи на несколько подзадач.
Покорение — рекурсивное решение этих подзадач. Когда объем подзадачи доста-
точно мал, выделенные подзадачи решаются непосредственно.
Комбинирование решения исходной задачи из решений вспомогательных задач.
Алгоритм сортировки слиянием (merge sort) в большой степени соответствует
парадигме метода разбиения. На интуитивном уровне его работу можно описать
таким образом.
Разделение: сортируемая последовательность, состоящая из п элементов, разби-
вается на две меньшие последовательности, каждая из которых содержит
п/2 элементов.
Покорение: сортировка обеих вспомогательных последовательностей методом
слияния.
Комбинирование: слияние двух отсортированных последовательностей для по-
лучения окончательного результата.
Рекурсия достигает своего нижнего предела, когда длина сортируемой последова-
тельности становится равной 1. В этом случае вся работа уже сделана, поскольку
любую такую последовательность можно считать упорядоченной.
Энтони Уильяме
Параллельное программирование на C++ в действии
Практика разработки многопоточных программ

Цитата:
4.4.7. Функциональное программирование
с применением будущих результатов
Термином функциональное программирование (ФП) называют такой
стиль программирования, при котором результат функции зависит
только от ее параметров, но не от внешнего состояния. Это напрямую
соотносится с понятием функции в математике и означает, что если
два раза вызвать функцию с одними и теми же параметрами, то
получатся одинаковые результаты. Таким свойством обладают многие
математические функции в стандартной библиотеке C++, например
s in, cosh sqr t, а также простые операции над примитивными типами,
например 3+3, 6*9 или 1.3/4.7. Чистая функция не модифицирует
никакое внешнее состояние, она воздействует только на
возвращаемое значение.
При таком подходе становится проще рассуждать о функциях,
особенно в присутствии параллелизма, поскольку многие связанные
с разделяемой памятью проблемы, обсуждавшиеся в главе 3, просто
не возникают. Если разделяемые данные не модифицируются, то не
может быть никакой гонки и, стало быть, не нужно защищать данные
с помощью мьютексов. Это упрощение настолько существенно, что
в программировании параллельных систем все более популярны
становятся такие языки, как Haskell3, где все функции чистые по
умолчанию. В таком окружении нечистые функции, которые все же
модифицируют разделяемые данные, отчетливо выделяются, поэтому
становится проще рассуждать о том, как они укладываются в общую
структуру приложения.
Но достоинства функционального программирования
проявляются не только в языках, где эта парадигма применяется по умолчанию.
C++ - мультипарадигменный язык, и на нем, безусловно, можно
писать программы в стиле ФП. С появлением в С++11 лямбда-функций
(см. приложение А, раздел А.6), включением шаблона std: :bind из
Boost и TR1 и добавлением автоматического выведения типа
переменных (см. приложение А, раздел А.7) это стало даже проще, чем
в С++98. Будущие результаты - это последний элемент из тех, что
позволяют реализовать на C++ параллелизм в стиле ФП; благодаря
передаче будущих результатов результат одного вычисления можно
сделать зависящим от результата другого без явного доступа к
разделяемым данным.
Я выделяю следующие парадигмы:
1) Структурированное программирование
2) Объектно-ориентированное, сюда же шаблоны .
3) Функциональное программирование
4) Машина состояний и конечные автоматы.
5) Иерархия парадигма (разделяй и властвуй).
6) Параллельность.


Всё остальное я бы отнёс бы к аспектам. Их в каждой парадигме много поэтому не перечисляю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.11.2016, 18:24   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Так тебе не надо всё изучать... Просто пробежишь в поисках "ключевых слов" (обычно в самом начале даётся и всё).
___________________________________ __________________________

Dalinna, скажи:
1) чем функциональное парадигма отличается от остальных; а какие вообще ещё есть парадигмы программирования.
2) как ты думаешь, для "...объяснить современное развитие этих парадигм" простое перечисление "что входит в функциональную парадигму" прокатит?
3) как ты думаешь, что такое "упрощенные аспекты"? Это из википедии: атом, символ, списочные структуры... Кстате, ты же уже познакомилась с этими терминами?
4) Как функциональное программирование менялось со времени? И менялось ли вообще? (может что-то добавлялось/ убиралось).

Пока всё. Если не знаешь - поищи в инете.

Последний раз редактировалось ura_111; 06.11.2016 в 18:27.
ura_111 вне форума Ответить с цитированием
Старый 06.11.2016, 18:45   #10
Dalinna
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 4
По умолчанию

Спасибо всем за помощь!
Dalinna вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое парадигма ООП и вообще слово "парадигма"? romantik2011 Свободное общение 4 03.08.2011 21:23