LINUX.ORG.RU

Зачем нужны були?

 , ,


0

3

Поставил тег лисп просто потому, что лисперы, в отличии от, возможно заинтересуются, или уже интересуются этим вопросом, однако, это касается программирования вообще.

Все знают, наверное, lambda-like определение if-then-else. Вот один из вариантов:

(define t (lambda(x y) (x)))
(define f (lambda(x y) (y)))
(define if_ (lambda(a b c) (a b c)))

(if_ t (lambda() (write 'foo)) (lambda() (write 'bar))) ; foo
(if_ f (lambda() (write 'foo)) (lambda() (write 'bar))) ; bar
Тут есть даже псевдо-лень, как видим, причом безо всякой меты.

Что тут бросается в глаза в первую очередь? То, что if тут является пятым колесом. Он ничего не делает, и, по сути, нахер не нужен.

(t (lambda() (write 'foo)) (lambda() (write 'bar))) ; foo
И тут возникает вопрос: а при чем тут вообще логика? Мы ведь можем t заменить любой другой ф-цией, которая будет делать что-то другое, например, складывать результаты. Это обычная ф-ция, как и миллионны других. Абсолютно очевидно, что для програмирования були-свистули — это просто сахар, который не имеет отношения к программированию. Логика программы находится в голове программиста, а не в тексте программы.

Откуда это все пошло? Думаю, основная причина — в засилии математического быдла в отрасли, на заре CS. Они подогнали все под свои извращенные стандарты, притянули за уши математику и логику, а теперь, нормальные пацаны вынуждены разгребать за ними кучу говна, в отчаянных попытках отделить зерна от плевел.



Последнее исправление: anonimous (всего исправлений: 2)

Абсолютно очевидно, что для програмирования були-свистули — это просто сахар, который не имеет отношения к программированию. Логика программы находится в голове программиста, а не в тексте программы.

Так никто и не заставляет их насильно использовать. И главное верно: «логика программы находится в голове программиста». Если в конкретной программе используются логические значения, то удобнее читать (if (cond1?) (do1) (do2)) чем ((cond1?) (lambda() (do1)) (lambda() (do2))). Более того, как правило истина в программировании определяется как (define (true? x) (not (eq? x #f))). А в такое (функциональное) определение его придётся запихивать отдельным костылём. Типа ((as-boolean (cond1)) (lambda() (do1)) (lambda() (do2)))

Вообще можно вообще почти все конструкции переписать на lambda-функциях. Необходимое ядро для схемы: call/cc, lambda, vector, char, арифметика. Всё остальное можно и заново написать.

А если вопрос не конкретно про схему, а «зачем нужны були вообще», то скажи, чему (в противном случае) должно быть равно (> 5 4)? Можно, конечно, как в Си, сказать, что 5 > 4 == 1, но тогда возникают «замечательные» конструкции вида «f << (5 << f.eof())».

monk ★★★★★
()
Ответ на: комментарий от monk

то скажи, чему (в противном случае) должно быть равно (> 5 4)?

Оно ни чему не должно быть равно, по-дефолту. Мало того, я считаю, что символу 5, например, ничто не мешает вычислиться в foo. Я считаю, что констант быть в идеале быть не должно. Это не отменяет, конечно, что в математических арифметических расчетах оно вычислится в true, но наличие жестко заданных констант, а также булевых операторов, в целом, искажает смысл программирования. Тут важно то, что люди бумают, что программы а-приори основываются на логике и математике — а это порочный взгляд.

anonimous
() автор топика
Ответ на: комментарий от anonimous

наличие жестко заданных констант, а также булевых операторов, в целом, искажает смысл программирования. Тут важно то, что люди бумают, что программы а-приори основываются на логике и математике — а это порочный взгляд.

ловите наркомана!

leave ★★★★★
()
Ответ на: комментарий от PolarFox

у меня иногда возникает мысль, что ТС тоже на лямбдах написан

leave ★★★★★
()
Ответ на: комментарий от anonimous

Аплодирую

что программы а-приори основываются на логике и математике — а это порочный взгляд

Это Победа!

Stil ★★★★★
()
Ответ на: комментарий от anonimous

что программы а-приори основываются на логике и математике — а это порочный взгляд

а, кстати, на чем основываются программы?

Stil ★★★★★
()
Ответ на: комментарий от Stil

Я бы сказал, на природе. На естественных процессах. Если подойти к этому философски, то можно сказать, что человек приспосабливает под свои нужды свойства реальных вещей. И создает иллюзию логики.

anonimous
() автор топика
Ответ на: комментарий от anonimous

программы а-приори основываются на логике и математике — а это порочный взгляд

WAIT! Они должны основываться на интуиции? Или на чем?

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Они ничего никому не должны. Они создаются. Ты берешь чистый лист, и замечаешь, что он пачкается при прикосновении грязных рук. Ты замечаешь свойство листа, и понимаешь, что он способен хранить информацию. Ты делаешь записи на листе, можно сказать, что ты написал программу. Ты используешь свойства вещей — вот основа. Логика вторична.

anonimous
() автор топика
Ответ на: комментарий от gh0stwizard

Я его только пощупал, пока руки не дошли, толком.

anonimous
() автор топика

Начал за здравие (широко известный факт), кончил за упокой (шизофазия)

b-stern
()
Ответ на: комментарий от monk

Ты не устал ему что-то доказывать, или ты звёзды собираешь?

b-stern
()

Лямбда-исчисление полно по Тьюрингу, вот это новость!

Основная причина - твой чрезвычайно низкий уровень интеллекта.

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

Ага, а МТ полна по LC, так держать, кэп, скоро интеллектом блевать будешь и раздавать нищим на площадях.

anonimous
() автор топика
Ответ на: комментарий от vurdalak

Можно использовать что угодно, хоть + и -, это всего лишь обозначения.

anonimous
() автор топика
Ответ на: комментарий от anonimous

Лямбда-исчисление полно по Машине Тьюринга, вот это новость!

Основная причина - твой чрезвычайно высокий уровень интеллекта.

Kuzy ★★★
()

Думаю, основная причина — в засилии математического быдла в отрасли, на заре CS. Они подогнали все под свои извращенные стандарты, притянули за уши математику и логику, а теперь, нормальные пацаны вынуждены разгребать за ними кучу говна, в отчаянных попытках отделить зерна от плевел.

Зря ты на вооружение лексикон царя взял, раньше ты был просто невеждой, а теперь ещё и быдло.

mix_mix ★★★★★
()
Ответ на: комментарий от mix_mix

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

anonimous
() автор топика

Логика программы находится в голове программиста, а не в тексте программы.

Опять грибы без хлеба ел?

Sectoid ★★★★★
()
Ответ на: комментарий от anonimous

А может ты и есть Царь и страдаешь раздвоением личности? По теме много бреда. Начать надо с того, как работает ПК - это вычислительная машина, а вычислительная машина по определению работает по законам логики и математики.

peregrine ★★★★★
()

Чувак! Пожалуйста! Пожалей настоящих лоровских анонимусов - мы не можем тебя игнорить.

Может, того, а? ЖЖ или standalone?

anonymous
()
Ответ на: комментарий от anonymous

А почему ты, лоровский онанимус не жалеешь моего времени, которое я трачу на чтение этих соплей в комментарриях?

anonimous
() автор топика
Ответ на: комментарий от anonimous

5, например, ничто не мешает вычислиться в foo

Пришло время открыть для себя forth

buddhist ★★★★★
()
Ответ на: комментарий от anonimous

Они ничего никому не должны. Они создаются. Ты берешь чистый лист, и замечаешь, что он пачкается при прикосновении грязных рук. Ты замечаешь свойство листа, и понимаешь, что он способен хранить информацию. Ты делаешь записи на листе, можно сказать, что ты написал программу. Ты используешь свойства вещей — вот основа. Логика вторична.

ООП?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Ну, может быть, только в изначальном смысле, которое вкладывал в это понятие Алан Кей.

anonimous
() автор топика

Похожие темы

Транзитивность (2014)

Как в логике определить исключающее или. (2014)

Свистелки в математической логике (2014)

Лямбды в LC и языках программирования. (2014)

4/10. Хм.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonimous

Тут важно то, что люди бумают, что программы а-приори основываются на логике и математике — а это порочный взгляд.

Гы гы)) микроконтроллеры и ассемблер ты видимо не видел даже издалека.

P.S. Твои темы всплывают (в худшем смысле этого слова) уже пару дней у меня в уведомлениях. Хватит принимать вещества и топай в универ учиться!

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

Интересно, однако, как при этом объяснить тот факт, что в программировании микроконтроллеров столь популярен такой «нематематичный» язык (btw, вызывающий неиллюзорный батхерт у факториальщиков) как tcl?

anonymous
()

Ты же троллишь нас, ушлепок.

anonymous
()
Ответ на: комментарий от anonimous

Тут важно то, что люди бумают, что программы а-приори основываются на логике и математике — а это порочный взгляд.

Платина.

Deleted
()
Ответ на: комментарий от anonymous

в программировании микроконтроллеров ... популярен ... tcl

Пример

вызывающий неиллюзорный батхерт

Пример

«нематематичный»

В чем же?

buddhist ★★★★★
()
Ответ на: комментарий от anonimous

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

aedeph_ ★★
()
Ответ на: комментарий от buddhist

Это общеизвестные факты, погугли. Что касается нематематичности, то хотя бы в том, что там нет типов. Это (почти) чисто интерпретируемый язык с эвалом во все края. Это все никак не сочетается с нынешней математикой в программировании. Ты уж раз завел разговор, возражай тогда по существу, чтоли. Смоллток, кстати, тоже антиматематичен, да и лисп, тот что в ИИ использовался, тоже этим грешит. В старых лиспах, кстати, и не было, в явном виде, булевых значений.

anonymous
()
Ответ на: комментарий от anonymous

В старых лиспах, кстати, и не было, в явном виде, булевых значений.

Да? А в каком виде они были?

anonymous
()
Ответ на: комментарий от Norgat

да ну нафиг универ

Половину лекции для меня — большая редкость. Я обычно начинаю с середины, и убеждаюсь в узости мышления лектора через 1-2 минуты. Нормальных лекций кот наплакал. И вообще, я считаю, что научиться из лекций ничему невозможно. Только для ознакомления хожу, не более.

Лямбда исчисление: в чем подвох? (комментарий)

anonymous
()

Хочешь дзен от программирования?

Ты всю программу можешь представить чем то вроде хэш таблички. Ты ей ключ, она тебе значение. А программист лишь занимается наполнением этой хэш таблички.

fun (+) a b 1 1 -> 2 1 2 -> 3 ...

И все собственно. Далее идет иерархия таких табличек. Особо нужное заоптимизированно в железо, математика например.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.