LINUX.ORG.RU

Нечеловеческие языки

 


1

4

Объекты/методы и функции - это всем интутивно понятно.

Поделитесь языками, в которых базовые конструкции абсолютно неинтуитивные и чуждые человеческому мышлению? Можете на пальцах рассказать, что они значат?

Какая самая сложная базовая конструкция, идея или принцип, с которым вы встречались на уровне кодинга? (имеется в виду не физика черных дыр, а сам процесс кодирования компьютерной программы)

(возможно этой теме место в толксах)

★★★★☆
Ответ на: комментарий от abs

Если уж на то пошло, ребёнку рассказать какую-нибудь функциональщину проще, если не затрагивать теоретические основы.

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

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

Годная вещь, на самом деле. Вот только бы приблизить её к дргугим функциональнам ЯП.

quantum-troll ★★★★★
()
Ответ на: комментарий от theNamelessOne

Что не так? Продолжения описаны в RnRS, как часть языка.

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

базовые конструкции

Все правильно же, там упомянули, что first-class. А такие, насколько знаю, должны быть реализованы в языке. (Ну или доступ к равномощным инструментам, в схеме «базовее» нету.)

anonymous
()

Кто сказал BrainFuck/Oak/Malbolge? :-)

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

На вид обычная клавиатура. Ну раскладка немного непривычная.

gadfly ★★
()

prolog. Уродливый dsl, непригодный ни для чего, и в котором даже элементарные вещи пишутся через жопу.

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


А теперь заставь ребёнка представить абстрактный мяч.



да легко
мячик «без вкуса, без цвета, без запаха»(c)
p.s. ближе к теме: брейнфак - няшка, это скажет каждый, кто семестр решал задачи для машины Тюринга :)

metawishmaster ★★★★★
()
Последнее исправление: metawishmaster (всего исправлений: 1)

Представление графа на любом ЯП реализуется достаточно сложно.
Специализированных под это языков не встречал.

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

prolog. Уродливый dsl, непригодный ни для чего, и в котором даже элементарные вещи пишутся через жопу.

Прекрасный dsl, пригодный для определенного класса сложных вещей, и в котором даже некоторые (требующие в других языках знатно поплясать) пишутся довольно красиво.

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

функторы, аппликативные функторы и монады в картинках т.е. все таки это можно представить как объекты окружающего мира

есть мнение, что все что придумал человек можно как то обосновать и найти аналогии в объектах окружающего мира

umren ★★★★★
()

Поделитесь языками, в которых базовые конструкции абсолютно неинтуитивные и чуждые человеческому мышлению?

INTERCAL

no-such-file ★★★★★
()

Прочитал трэд.

Самое нечеловеческое мне встретилось в коде индусского оутсорсера из Мумбая.

Когда я туда позвонил чтобы понять хоть что нибудь мне на ломанном риндишь сказали что тому талантливому парню предложили _целых_ $200 в месяц и он теперь работает на ... IBM. Послке этого я умер, а когда воскрес медленно побайтно стёр эту муйню и написал всё с нуля :)

Так вот мой вариан ответа - индусокод. Использованный ЯП - не важен ... :)

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

Это же всё языки описания, а не программирования.

Чем отличаются?

Что за язык программирования графов тогда? Язык описания диаграмм Тьюринга пойдет?

Kuzy ★★★
()

Плюсаную «продолжения», вот осталось в заметка, когда тыкал в ruby (наверное, не самый интересный вариант): [call]#!/usr/bin/env ruby

require 'continuation'

def ping other (1..5).each do |i| puts «Ping #{i}» other = callcc{|k| other[k]} end other end

def pong other (1..6).each do |i| puts «Pong #{i}».rjust(14) other = callcc{|k| other[k]} end end

kont = ping method(:pong) puts «one more pong» callcc{|k| kont[k]}

Из хаскеля показались сложными: type families (и в программировании на типах плохо разбираюсь, но fundeps легче «парсил»), lens (именно этот пакет: где обычная композиция, через profunctors) - ну это уже отдельная библиотека.

tcl - когда смотрел непростым показался (хотя бы в плане ломания мозга об uplevel / upvar).

zsh - когда писал ф-ии для дополнения-командной-строки (ну это вряд ли «базовая» вещь - скорее монструозный edsl).

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

блин..

require 'continuation'


def ping other
  (1..5).each do |i|
    puts "Ping #{i}"
    other = callcc{|k| other[k]}
  end
  other
end

def pong other
  (1..6).each do |i|
    puts "Pong #{i}".rjust(14)
    other = callcc{|k| other[k]}
  end
end
  

kont = ping method(:pong)
puts "one more pong"
callcc{|k| kont[k]}

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

В них нет инструментов анализа и обработки, которые должны быть написаны на другом языке. Исключение, разве что, - XML/XSLT.

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

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

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

Всякие библиотеки типа boost parser. Применение compile time вычислений для чего-то сложнее вычисления факториала.

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

Применение compile time вычислений для чего-то сложнее вычисления факториала.

дык оно очень убогое. всяким там constexpr трудно найти реальное применение (можно, но трудно).

Всякие библиотеки типа boost parser.

boost вообще нестандартная либа. в ней много своих тупняков.

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

форт был забавным

Только запросу не соответствует, так как куда ближе к человеческому языку, чем любой иной :)

KRoN73 ★★★★★
()

Вот, из самых бесчеловечных :D

    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';

KRoN73 ★★★★★
()

Почему до сих пор никто не сказал про Piet?

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

представления? что ты имеешь в виду? нормальную отрисовку? согласен. реализацию структуры? если без бд-примочек - тривиально.

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

что это?

Это «99 бутылок» на Перле :) Вот тут можно оценивать, насколько языки человеческие или нечеловеческие: http://www.99-bottles-of-beer.net/

На Форте или Хаскелле (не реализуя на них новое языковое подмножество) так фиг напишешь :)

KRoN73 ★★★★★
()

логическое программирование
пролог

ii343hbka ★★★
()

Я имел больше всего трудностей в объяснении нубам специфик работы с мутабельными объектами со ссылочной семантикой в языках вроде луа, питона, жабы и т.д.

def f(a):
    a = 5 #nothing happens
def f(obj):
    obj.x = 5 #object mutated
def f(obj):
    obj = another_object #nothing happens
PolarFox ★★★★★
()

Поделитесь языками, в которых базовые конструкции абсолютно неинтуитивные и чуждые человеческому мышлению?

python

Какая самая сложная базовая конструкция, идея или принцип, с которым вы встречались на уровне кодинга?

пробелы и табы, несовместимые друг с другом, и влияющие на выполнение кода

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

Just for fun, особенно доставил Myth и то, во что я потом развил MSM/STXTRM, но никуда не выложил, ибо нах.

border-radius
()

Обязательность табов в мейкфайлах.

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

этих конпеляторов

Myth - интерпретатор чистый, MSM и Impera - тоже, а вот STXTRM и не-Тьюринг-полный StackBeat да, компилятся в промежуточный JS.

border-radius
()
Ответ на: комментарий от abs

Можно складывать как натуральные, так и целые(дробные и так далее) числа.

Охренеть как интуитивно. От этого совсем не далеко, до «монады — это просто моноиды в категории эндофункторов».

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

Откопал старые файлики

Жопс, ты меня заставил порыться в старых дынных. Если интересно ядро интерпретатора лиспа на JS размером в 229 байт, могу выложить.

border-radius
()
Ответ на: комментарий от ugoday

Охренеть как интуитивно.

Не не, ты не так понял. Я не говорю про интуитивно понятные математические операции. Я лишь говорю об интуитивной понятности того что операции можно делать с разными объектами. Операция сложения работает как я яблоками так и с грушами.

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

это вы подменяете понятия: «интуитивно понятно» и «интуитивно очевидно». концепций 2-го типа в программировании нет вообще.

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