- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
// Playground - noun: a place where people can play
import Cocoa
// Изначальный массив и ссылка на него
var originalArray: Int[] = [1, 2, 3]; // [1, 2, 3]
var extraArray = originalArray // [1, 2, 3]
// Поменяем во втором массиве элемент
extraArray[0] = 666
// Оппа изменился и в первом
extraArray // [666, 2, 3]
originalArray // [666, 2, 3] O_o
// Не делись!
extraArray.unshare()
// Теперь они живут своей жизнью
extraArray[0] = 333
extraArray // [333, 2, 3] okay
originalArray // [666, 2, 3]
// А вот тут будет наоборот
var anotherArray = originalArray // [666, 2, 3]
// auto unshare
anotherArray.append(-1)
anotherArray.removeLast()
anotherArray[0] = 777
anotherArray // [777, 2, 3]
originalArray // [666, 2, 3]
// Словари вообще не так себя ведут, всегда копирование
var originalDictionary = [ 1: "hello", 2: "world"]
var extraDictionary = originalDictionary
extraDictionary[1] = "no way"
originalDictionary // [ 1: "hello", 2: "world"]
extraDictionary // [ 1: "no way", 2: "world"]
Я восхвалял Свифт, а же его и обосру.
В Свифте есть массивы и словари. Так вот словари при присваивании или передаче как аргумента копируются. Окей. Теперь массивы. Они, оказывается, не копируются, а разделяют значения между собой! Т. е. передал массив в ф-цию, она там что-то испортила, массив испортился везде, где засветился.
Чтобы эту фигню остановить, нужно вызывать спец. функцию unshare
Но это еще не все. При некоторых операциях с массивами (потенциально меняющих их длину) unshare делается автоматически!
Предвижу классическую ошибку свифтокодеров: ожидал, что массив поменяется, а он не поменялся снаружи; или передал массив, поюзал, а он снаружи неожиданно испортился. Плюс путаница, что базовые типы ведут себя по-разному.
Оправдание Apple: мы хотели перформанс С-массивов в Свифте, поэтому сделали эту хрень.
laMer007 04.06.2014 08:35 # +12
В прошлый раз так сказал Страуструп. Мы знаем что из этого получилось.
LispGovno 04.06.2014 10:59 # +7
С++ стал успешен.
kegdan 05.06.2014 20:20 # −4
bormand 05.06.2014 20:41 # +5
kegdan 05.06.2014 20:45 # −1
brutushafens 05.06.2014 20:56 # +3
defecate-plusplus 06.06.2014 10:04 # +2
оксюморон
примерно, как богатый дотнетчик
roman-kashitsyn 04.06.2014 11:02 # +5
Гы, ввоз какавы облагается налогом
а import antigravity имеется?
3Doomer 04.06.2014 15:16 # 0
roman-kashitsyn 04.06.2014 16:07 # +2
Vasiliy 04.06.2014 16:36 # 0
Fike 04.06.2014 12:43 # +6
Я восхвалял свифт, а потом до меня дошло, что сначала надо его потрогать
ffixed
tirinox 04.06.2014 12:46 # 0
Fike 04.06.2014 12:52 # +3
tirinox 04.06.2014 14:43 # −1
Fike 04.06.2014 18:56 # +3
bormand 04.06.2014 19:05 # +4
Мы рады представить вам новый язык - swift. Вы, наверное, думаете, что мы будем рассказывать вам о замечательных фишках и удобстве нового языка? А вот и не угадали! Мы расскажем только о говне и косяках!
1024-- 04.06.2014 19:31 # +1
tirinox 05.06.2014 07:59 # +2
Fike 05.06.2014 11:37 # 0
3.14159265 04.06.2014 13:25 # +4
Ну это кстати логично, с точки зрения low-level кодера. Может того кто не знает как выделяется память это и удивит.
А проблема в другом - вроде делали выскоуровевый язык, а опять абсракция потекла из-за банального байтоебства. Никуда от него не деться.
Вроде хотели упростить жизнь сделав операции выделения нового куска памяти и копирования неявными, а только всех запутали.
roman-kashitsyn 04.06.2014 13:40 # +2
Не понимаю, куда смотрел Sean Parent с его любимой value-семантикой.
Опять же, можно было копирование сделать явным (как в жабе), тогда бы ни у кого вопросов не возникало.
tirinox 04.06.2014 13:46 # 0
roman-kashitsyn 04.06.2014 13:49 # 0
3.14159265 04.06.2014 14:06 # 0
Фуууу. Это ж надо руками копировать, пусть тупые байтоебы этим занимаются. Хотим чтоб язык сам всё делал и при этом имел расшаренные массивы.
wvxvw 04.06.2014 14:36 # 0
Elvenfighter 04.06.2014 16:00 # −1
tirinox 04.06.2014 16:14 # +2
Elvenfighter 04.06.2014 16:47 # 0
wvxvw 04.06.2014 16:58 # 0
Elvenfighter 04.06.2014 17:30 # 0
roman-kashitsyn 04.06.2014 17:34 # +4
Elvenfighter 05.06.2014 11:39 # +2
wvxvw 04.06.2014 18:00 # 0
Elvenfighter 05.06.2014 11:45 # 0
Лично у меня есть опыт только с лиспоподобным CLIPS. По тому опыту я бы на назвал лиспы лаконичными, но я не знаком с теми самыми макросами с поста выше.
roman-kashitsyn 05.06.2014 11:59 # +2
Например, макросами можно автоматически вставлять try-finally вокруг блока кода для освобождения ресурсов, генерировать структуры данных/функции по небольшому набору данных (актуально для всяческих ORM), генерировать парсеры, компилировать шаблоны веб-страниц в компайл-тайме, написать универсальный умный ассёрт для юнит-тестов, етц.
За это приходится платить раздутым рантаймом и либо мириться с написанием программы в виде АСТ, либо каждый раз изучать семантику каждого конкретного макроса.
tirinox 05.06.2014 12:41 # +1
bormand 05.06.2014 14:17 # 0
Скажи это php'шникам с их адовым квазицитированием из стремных <?php и ?>
wvxvw 05.06.2014 18:01 # −1
К комментарию ниже: запятые писать не обязательно. Запятая - это ридер-макро, которое вызывает функцию quote. С типографской точки зрения - да, нелепо, но если мы посмотрим на Фортраноподобных, то там кромешный пиздец по сравнению, что делает такие жалобы бессмысленными.
roman-kashitsyn 05.06.2014 18:21 # +3
Когда разные конструкции выглядят по-разному, они распознаются быстрее.
Всякую математику мне гораздо удобней в инфиксной записи распознавать.
Тут каждый для себя решает сам.
wvxvw 05.06.2014 18:37 # 0
Примеры: гуглопоиск, победивший все остальные виды поиска, который чуть ли не всерьез называют скайнетом, и тем не менее на столько тупой, что это даже не смешно.
Вот, недавний пример: корпорации типа Эппла, распространяющие заплесневевшее старье, под лозунгом продвинутых технологий.
Современная математическая запись - точно такая же ничем не мотивированая монополия, которой учат, не давая выбора. Ну а потом получаем - идиотскую бессвязную систему записи, которую, тем не менее все так замечательно выучили, что что-то более вменяемое не может развиться, не получая достаточного внимания.
roman-kashitsyn 05.06.2014 18:55 # 0
wvxvw 05.06.2014 21:25 # 0
3.14159265 05.06.2014 20:58 # +3
Это про банковскую систему, а не про Евангелие.
wvxvw 05.06.2014 21:18 # 0
Опять же желающие наверное смогут найти перевод на интересующих их язык. Я цитирую на том, на котором учил / знаю.
guest 06.06.2014 10:42 # +2
wvxvw 06.06.2014 11:30 # 0
Поэтому читать что-либо на современном иврите - это только для патриотов, которым нечем время занять. В повседневной жизни этот язык не нужен, и, я надеюсь, скоро исчезнет.
Я агностик, если так интересует. Я учился в католической школе одно время, с обязательными занятиями по Катехизису, потом в протестанской миссианской воскресной школе, поэтому Библию читал чаще на английском.
eth0 08.06.2014 19:07 # 0
3.14159265 05.06.2014 20:59 # 0
Плюс. Лисп хорош своей простотой, но читать тяжело.
brutushafens 05.06.2014 21:01 # 0
roman-kashitsyn 06.06.2014 12:21 # +1
Лишп - это не конкретный язык, это семейство языков, обладающих определёнными свойствами буйством скобок например
Лишпы перерождаются из поколения в поколение, они, похоже, никогда не помрут
brutushafens 08.06.2014 19:13 # 0
wvxvw 05.06.2014 21:33 # 0
Например, ходило поверие о том, что в кирилличных шрифтах мало выносных элементов. Болгары решили добавить, и сделали на манер латиницы выносные элементы у "к" и "в". Болгары довольны, делают замеры, опросы и исследования - и их шрифты читаются лучше типичных кирилличных без соответсвтующих выносных элементов. Но точно те же самые исследования проведенные в странах пользующихся кириллицей, но без этих выносных элементов показывают абсолютно противоположный результат.
3.14159265 05.06.2014 23:17 # +1
Каждый кулик в своё болото гадит хвалит.
wvxvw 05.06.2014 23:45 # 0
roman-kashitsyn 06.06.2014 09:53 # +3
Понимать суть вводимых понятий, доказывать теоремы, выводить нужные результаты, применять теории в решении задач было действительно трудно.
Разобраться, какие значки за что отвечают в большинстве случаев было очень просто. Напрягала в основном разрозненность терминов и нотаций в различных разделах, но тут некого винить.
wvxvw 06.06.2014 10:20 # 0
Или, если уж продолжать обмен жизненным опытом в предложенном ключе: не так давно читая книжку по статистике случайно наткнулся на ошибку в формуле. Автор сравнивая две функции доказывая, что они по-сути одно и то же, но в одном месте ошибся заменив букву цифрой. Я проебался несколько часов пытаясь понять что автор хотел сказать своими формулами. Даже в Октаве графики нарисовал и т.д. В итоге не понял и пошел на форум спрашивать. Благо оказался человек, который хорошо знал материал и подтвердил, что в книжке была ошибка.
Из чего можно сделать два вывода:
- большинство людей прочитавших книжку не вникали в формулы (потому что их тяжело читать).
- даже владея языком в очень хорошей степени, при наличии совершенно незначительной ошибки, можно не понять смысла.
roman-kashitsyn 06.06.2014 11:23 # +3
Я всего лишь выразил своё мнение. О принятии каких решений идёт речь? Где именно написано, что нужно руководствоваться моим мнением?
> на личном опыте, который, прям скажем, не отражает даже 0.000000001%?
У меня университет был профильный, математический дисциплин преподавали десятки, всех мастей, читать (и формул писать) много приходилось.
Диплом писал в ИПФ РАН, там формулы на полстраницы А4 - это норма.
Имхо при изучении вещей вроде групп вращений экосаэдра или топологии нотация является наименьшей из сложностей.
Про то, как бедным наборщикам тяжело понять формулы я уже говорил - это не проблема математиков. Главное, чтобы самим математикам было удобно.
Кнут когда-то уже наслушался нытья и сделал нормальную систему вёрстки для математиков, которой они сами могут пользоваться.
> в одном месте ошибся заменив букву цифрой
В других системах нотации, разумеется, наборщик не смог бы перепутать букву с цифрой?
Ну и продолжая в вашем стиле:
Математическая нотация говно по субъективному мнению некого Олега Сивоконя, нашедшего опечатку в одной из сотен книг по статистике? Этим определённо следует "руководствоваться в принятии решений".
wvxvw 06.06.2014 11:38 # 0
Правильно, вы ни разу не специалист по языкам, вы занимались чем-то что абсолютно никакого отношения к языкам не имеет, и теперь вышли с очень ценными размышлениями по неизвестному вам вопросу?
В отличие, языки - это моя специальность (типография). Я не просто владею нужной статистикой, а еще и могу найти теорию, которая эту статистику обьясняет. Естесственно, что мое мнение по этому вопросу имеет вес, а ваше нет.
Греки, например, писали все формулы словами (типа как в Паскале или Бейсике, даже хуже).
roman-kashitsyn 06.06.2014 11:51 # +1
Ух, я будто в средневековье попал на мгновенье - схоластика и вес авторитетов.
Ваше мнение в этом вопросе имеет ровно такой же ничтожный вес, как и моё.
> Греки, например, писали все формулы словами (типа как в Паскале или Бейсике, даже хуже).
Это делали ещё задолго до греческих математиков, в Вавилоне, например. Я читал подобные "рецепты" в книгах по истории математики - это лютый треш, я ничего не смог понять.
wvxvw 06.06.2014 12:05 # 0
Я не говорил, что такая запись началась с Греции - бессмысленно с этим спорить. Терш - потому что вы плохо разбираетесь в языках. Если бы вы были профессионалом в чтении формул на естесственном языке, а "универсальный" математический язык вам впервые показали, ну, скажем лет в 17, вы бы скорее всего даже не попытались его понять, ну или по крайней мере не на столько, чтобы заменить им такую привычную и удобную систему записи.
1024-- 06.06.2014 11:24 # +1
А это как-нибудь решается/может быть решено? Скажем, обычном языке ашипги часта лихко лофятца. Можно, конечно, записывать формулы словами или подробно расписывать каждое равенство, но это не совсем верный путь.
roman-kashitsyn 06.06.2014 12:01 # 0
казнить нельзя помиловать
wvxvw 06.06.2014 12:11 # 0
1. Легко установить, что в нем присутствует неоднозначность.
2. Легко обнаружить все возможные варианты интерпретации.
Легко - значит, что у любого носителя языка это предложение не вызовет практических затруднений. Есть другие, худшие варианты, известные как garden path: это когда одно и то же слово повторяется, но используется в разных качествах, например "Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo". И тем не менее, статистически, таких предложений исчезающе мало. Ни один человек, только если не ради курьеза всерьез не создаст такое предложение.
А теперь, внимание, попробуйте ради курьеза создать формулу, которую тяжело понять. Что так никак не получается? :)
roman-kashitsyn 06.06.2014 12:16 # +1
3.14159265 06.06.2014 12:27 # 0
Вроде Гаусс говорил, если студенту неочевидна эта формула - из него не выйдет первоклассного математика.
>Если эту формулу описать словами, она будет очевидна даже ребёнку.
Это как?
roman-kashitsyn 06.06.2014 12:46 # +2
ну до студента ещё дорасти надо, школу там окончить, алгебру осилить, научиться абстрагироваться от чисел, узнать про функции, про e, про i, про косинусы с синусами и экспонентами.
Вот после этого можно начать задаваться вопросом, с чего это вдруг экспонента от мнимых чисел превращается поворот на комплексной плоскости.
Какому-нибудь зулусу одновременно непонятны будут и формула, и сплетения иностранных слов с запятыми. Корректировать ошибки он сможет только после того, как у него сформируются ментальные модели вещей, о которых идёт речь, возникнут связи моделей и символов, их представляющих, и появится опыт работы с сформировавшимися правилами оперирования этими символами.
roman-kashitsyn 06.06.2014 13:18 # +2
> Это как?
Это был сарказм.
По моему нерепрезентативному и неавторитетному опыту формирование представления о математических сущностях - гораздо более ресурсоёмкая задача, нежели парсинг мат.формул.
Нерепрезентативный и неавторитетный опыт в оптимизации подстказывает мне, что ресурсы имеет смысл тратить только на оптимизацию наиболее затратных операций.
В нашем случае это выражается в выпуске доступных школьникам научно-популярных книгах и лекциях, формирующих и демонстрирующих нужные модели на простых примерах.
Т.е. с моей быдлоточки быдлозрения "Квант" и Я. Перельман необходимы, Сивоконь - нет.
wvxvw 06.06.2014 12:29 # −1
* казнить нельзя помиловать (1)
e^(i*x) = cos(x) + i*sin(x) (2)
Выражение (1) херактеризуется тем, что его нельзя однозначно интерпретировать зная значение всех его компонентов, т.как выражение было составлено с ошибкой (нарушением правил составления таких выражений). Если ошибку исправить, то никаких затруднений это выражение не представляет.
Выражение (2) изобилует идиотизмом. Мы не знаем значения всех его компонентов и не можем вычленить правила их использования, и вот почему:
- в выражении отсутствует последовательность в использовании типографических элементов - инфиксных операторов. Они то обрамляются пробелами, то нет. Читатель не сможет понять несет ли этот факт семантическую нагрузку, или это неопрятность автора.
- последовательность выполнения действий не понятна. Читатель не сможет понять, нужно ли сначала применить операцию *, операцию (, или операцию cos.
- зная о некоторых подводных камнях, читатель может предположить, что интерпретация cos(x) это на самом деле умножение переменной cos на переменную x.
- ни место ни роль в предложении никак не определяют семантическую роль его компонентов. e - константная функция, для которой не был использован синтаксис вызова функции, а cos - это унарная динамическая функция - но кто ж об этом знает?
На самом деле этих пунктов можно дописать еще много, но место скоро закончится.
roman-kashitsyn 06.06.2014 12:58 # +6
Выражение изобилует идиотизмом.
Мы ничего не знаем о символах, из которых оно состоит. Они то обрамляются пробелами, то нет. Читатель не сможет понять несет ли этот факт семантическую нагрузку, или это неопрятность автора.
зная о некоторых подводных камнях, читатель может предположить, что интерпретация "казнить нельзя" это на самом деле имя собственное - существо с фамилией "казнить" и именем "нельзя".
ни место, ни роль в предложении никак не определяют семантическую роль компонентов. Казнить - глагол, нельзя - предикатив - но кто ж об этом знает?
На самом деле этих пунктов можно дописать еще много, но место скоро закончится.
guest 06.06.2014 13:50 # 0
Да даже и без них. Известный пример с более чем 1000 смыслов:
"Письма знакомой из Киева не заменят фотографии его любимой и милой дочери Марии."
wvxvw 06.06.2014 14:43 # 0
Есть ли что-то подобное для математических формул? - Нет и близко, никто даже не пытается внести хоть каплю здравого смысла в то, что происходит в типографии в математике.
roman-kashitsyn 06.06.2014 14:58 # +3
Есть. Научные руководители, соавторы статей, рецензенты. Вычитывают формулы, причёсывают, подстраивают под принятые соглашения. Ни один нормальный научник не даст обозначить целое число буквой Дзета, рациональную дробь - буквой n, или переменную многочлена - плюсом.
Кроме упоротых японцев вроде уже мало кто сочиняет Принципильно Новую Терминологию 2000.
wvxvw 06.06.2014 15:24 # 0
Даже не настолько запущеный случай: шахматные диаграмы. Мне как-то довелось сверстать книжку по шахматам. Это фантастический пиздец. Я все проклял еще только-только начав, к концу работы я был готов заплатить автору и издать книжку за свой счет, лишь бы отстал. (Я нормально играю в шахматы, и могу без особых усилий читать диаграмы). Т.как я был единственным верстальщиком на все издательство (благодаря диаграмам), кто хоть сколько-нибудь разбирался в Латексе, ко мне после этой книжки как-то пришел человек, который хотел издать книжку по астрономии. Там, честно говоря, формул было не так уж и много, и вообще, книжка скорее научно-популярная. Но я не стал за нее браться, потому что это пиздец, и нет таких денег, которые бы можно было за это заплатить.
guest 06.06.2014 15:29 # 0
И что, шахматные диаграммы тоже какие-то дебилы умудрились сделать более неоднозначными чем естественный язык? Может проблема все-таки не в формулах, а в недостатке специалистов по математике\шахматным диаграммам в издательстве?
roman-kashitsyn 06.06.2014 15:39 # +5
Очевидно же, что шахматисты и математики - беспросветно унылые и тупые люди, и лишь Типографы достаточно умны, образованны и авторитетны, чтобы сделать всё правильно (т.е. так, чтобы им было удобнее печатать).
wvxvw 06.06.2014 15:39 # 0
- экзотической верстки (нельзя просто набрать текст подряд, нужно набирать или по колонкам, или по строкам, ссылки на фигуры находятся в исходнике не там, где они находятся на странице).
- нет возможности минимально ошибиться и итеративно исправлять. Очень просто совершить новую ошибку исправляя старую. По доисторическим совковым гостам печатная страница вычитывалась максимум три раза (т.как новые ошибки очень редко появляются врезультате правки). Шахматы можно править десятки раз.
- шахматы в принципе не возможно вычитать с исходника. Исходник шахматной диаграмы абсолютно не похож на саму диаграму, и представить где стоят фигуры опираясь нa это нет никакой возможности. Есть профи шахматисты, которые могут держать в памяти всю доску, и им не обязательно видеть диаграму / реальную доску, но пересечений между профи шахматистами и верстальщиками на диаграме Вен не существует.
defecate-plusplus 06.06.2014 15:42 # +3
http://goo.gl/H2Ks6
1024-- 06.06.2014 15:46 # +3
wvxvw 06.06.2014 15:54 # 0
Опять же, из этого рисунка корректору не понятно, стоит ли фигура на черном или на белом поле. Очень лего ошибиться на одну клетку в любую сторону. Вобщем, все как уже и было сказано. Латексовы шахматные диаграмы не сильно отличаются от того, что есть по ссылке. И тем не менее, это ад.
bormand 06.06.2014 16:00 # 0
wvxvw 06.06.2014 16:08 # 0
Но самое главное обстоятельство, которое тут упускается из виду, это то, что корректор в нормальном режиме вычитывает типографский печатный лист (24 строки по 72 символа в строке) примерно 5 минут. На диаграму, которая занимает, в зависимости от извращенного вкуса наборщика от примерно 30 до 80 символов корректор может потратить полчаса а то и час. Т.е. КПД снижается в сто раз, если не больше. Но корректор не получит за эту херню в сто раз больше зарплаты. Максимум вдвое, и то если повезет.
guest 06.06.2014 16:12 # +1
Наверное потому что оно никого кроме корректоров не волнует.
bormand 06.06.2014 16:27 # +1
Ну дык, смотря какая задачка попадется... Некоторые и за полчаса не решишь :)
wvxvw 06.06.2014 16:40 # 0
3.14159265 06.06.2014 14:08 # +1
- Фамилия Ваша?
- Горидзе
- А зовут Вас как?
- Авас.
wvxvw 06.06.2014 14:36 # 0
guest 06.06.2014 15:01 # 0
Есть ли что-то подобное для математических формул? - Нет и близко, потому что они не настолько неоднозначные и костыльные как естественные языки.
fixed
wvxvw 06.06.2014 15:14 # −1
Другми словами: это каким же дибилом нужно быть, чтобы так испортить язык, не смотря на то, что перед глазами всегда был нормальный пример.
guest 06.06.2014 15:23 # +5
TarasB 04.06.2014 13:30 # +1
bormand 04.06.2014 13:37 # +4
Потому что Аду проектировала не низкоуровневая сишкоблядь.
TarasB 04.06.2014 15:26 # −1
3.14159265 04.06.2014 14:01 # 0
Как это так выходит? И ничего не копируется и никто не наводит порчу?
http://ideone.com/SPaHHf
TarasB 04.06.2014 20:45 # 0
чё это за хуйня? к тому же в параноидальном режиме она тормозит
надо for i in a'Range loop
разница в том, что такая запись делает ненужной проверку индекса
если просто скопировать один массив в другой, то конечно создаётся копия
а если передать массив в функцию, то ничё не копируется