Re[4]: Swift
От: Cyberax Марс  
Дата: 03.06.14 11:25
Оценка:
Здравствуйте, Mamut, Вы писали:

A>>На самом деле, это скорее ВАУ фича, чем что-либо полезное. Те примеры что есть, скорее всего масксимум возможностей и показывают, а именно простые однопоточные приложения с простой моделью данных.

M>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL
Мне вот всегда было интересно зачем REPL нужен...
Sapienti sat!
Re: Swift
От: Klapaucius  
Дата: 03.06.14 12:27
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Apple родила язык.


Спасибо, Эппл, что не iGO.

I>Вывод типов


Это скорее реконструкция типов.

I>паттерн-матчинг,


Насколько я понял, он "плоский", Т.е. [Just a,_] не сматчит. Привет 60-е, короче говоря.
Да и синтаксис у него, конечно, тот еще:
enum ServerResponse {
    case Result(String, String)
    case Error(String)
}
let success = ServerResponse.Result("6:00 am", "8:09 pm")
let failure = ServerResponse.Error("Out of cheese.")

switch success {
    case let .Result(sunrise, sunset):
        let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
    case let .Error(error):
        let serverResponse = "Failure... \(error)"
}


I>замыкания,


Это без ГЦ на одном подсчете ссылок? Ну ну.

I>дженерики,


Только вот от конструктора абстрагироваться-то как обычно нельзя.

I>'монадический' optional


Который, как я понял, автораспаковывается.

I>Если будет внятный GC,


А его хотя-бы обещают?

I>то это лучше C#, Джавы и С++ вместе взятых.


Тоже мне бином Ньютона. Чтоб хуже сделать — это специально постараться нужно, как Гуглу.

I>Но судя по набору фич язык сильно близко подобрался к Scala и F#


Он объединяет в себе недостатки этих языков: убогую систему типов F#-а c убогим Scala-синтаксисом.

I>И самое главное — Сишный синтаксис !


Как будто это что-то хорошее! Синтаксис не сишный, немного получше, но не сильно.
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[5]: Swift
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.14 12:28
Оценка:
A>>>На самом деле, это скорее ВАУ фича, чем что-либо полезное. Те примеры что есть, скорее всего масксимум возможностей и показывают, а именно простые однопоточные приложения с простой моделью данных.
M>>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL
C>Мне вот всегда было интересно зачем REPL нужен...

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


dmitriid.comGitHubLinkedIn
Re[6]: Swift
От: Cyberax Марс  
Дата: 03.06.14 12:34
Оценка:
Здравствуйте, Mamut, Вы писали:

M>>>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL

C>>Мне вот всегда было интересно зачем REPL нужен...
M>Это очень удобный инструмент. Как для быстрого прототипирования и проверки некоторых идей, так и для быстрого тестирования некоторых вещей
Ну так берёшь, создаёшь файлик и туда записываешь (с автокомплитом и всеми прочими плюшками) нужный код. Потом с отладчиком выполняешь, они нынче умные и позволяют удобно инспектировать код.
Sapienti sat!
Re[5]: Swift
От: Klapaucius  
Дата: 03.06.14 12:34
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Мне вот всегда было интересно зачем REPL нужен...


Нужен для экспериментирования с кодом. Просто это подходит только для языков где небольшой снипет кода что-то нетривиальное делает без трудновоспроизводимого окружения, вроде функциональных языков, либо в тех, где это самое окружение легко сохранять, вроде лиспов и смолтоков.
Во всяких C/Java он в основном бесполезен. также очень легко сделать неюзабельный REPL "для галочки", как в F#.
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[7]: Swift
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.14 12:46
Оценка:
M>>>>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL
C>>>Мне вот всегда было интересно зачем REPL нужен...
M>>Это очень удобный инструмент. Как для быстрого прототипирования и проверки некоторых идей, так и для быстрого тестирования некоторых вещей
C>Ну так берёшь, создаёшь файлик и туда записываешь (с автокомплитом и всеми прочими плюшками) нужный код. Потом с отладчиком выполняешь, они нынче умные и позволяют удобно инспектировать код.

1. Зачем, если ты имеешь тот же автокомплит (и часто отладчик) прямо из REPL'а?
2. Для большинства языков, чтобы что-то выполнить, нужно написать толпу обвязки вокруг (все эти main'ы, вызовы и прочее), когда надо быстро проверить пару идей?


dmitriid.comGitHubLinkedIn
Re[2]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.06.14 13:07
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>Насколько я понял, он "плоский", Т.е. [Just a,_] не сматчит. Привет 60-е, короче говоря.


90е и 2000 это Java и C#, в которых еще более примитивный switch

K>Да и синтаксис у него, конечно, тот еще:


Да, не такой, как в Хаскеле

I>>И самое главное — Сишный синтаксис !


K>Как будто это что-то хорошее! Синтаксис не сишный, немного получше, но не сильно.


Именно. Для 90% разрабов, которые только и имеют дело с сишным синтаксисом, это очень круто.
Re[8]: Swift
От: Cyberax Марс  
Дата: 03.06.14 14:27
Оценка:
Здравствуйте, Mamut, Вы писали:

C>>Ну так берёшь, создаёшь файлик и туда записываешь (с автокомплитом и всеми прочими плюшками) нужный код. Потом с отладчиком выполняешь, они нынче умные и позволяют удобно инспектировать код.

M>1. Зачем, если ты имеешь тот же автокомплит (и часто отладчик) прямо из REPL'а?
Не везде они есть.

M>2. Для большинства языков, чтобы что-то выполнить, нужно написать толпу обвязки вокруг (все эти main'ы, вызовы и прочее), когда надо быстро проверить пару идей?

А идеи без обвязки будут работать?
Sapienti sat!
Re[6]: Swift
От: Cyberax Марс  
Дата: 03.06.14 14:27
Оценка:
Здравствуйте, Klapaucius, Вы писали:

C>>Мне вот всегда было интересно зачем REPL нужен...

K>Нужен для экспериментирования с кодом. Просто это подходит только для языков где небольшой снипет кода что-то нетривиальное делает без трудновоспроизводимого окружения, вроде функциональных языков, либо в тех, где это самое окружение легко сохранять, вроде лиспов и смолтоков.
Ну то есть, как замена удобному отладчику.
Sapienti sat!
Re[2]: Swift
От: artelk  
Дата: 03.06.14 14:33
Оценка:
Здравствуйте, Klapaucius, Вы писали:

I>>паттерн-матчинг,


K>Насколько я понял, он "плоский", Т.е. [Just a,_] не сматчит. Привет 60-е, короче говоря.


https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Patterns.html#//apple_ref/swift/grammar

Там, вроде, рекурсивно в грамматике:

enum-case-pattern → type-identifier­ .­enum-case-name ­tuple-pattern­

tuple-pattern → (­tuple-pattern-element-list­)­
tuple-pattern-element-list → tuple-pattern-element­ tuple-pattern-element­,­tuple-pattern-element-list­
tuple-pattern-element → pattern
Re[9]: Swift
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.14 14:34
Оценка:
M>>2. Для большинства языков, чтобы что-то выполнить, нужно написать толпу обвязки вокруг (все эти main'ы, вызовы и прочее), когда надо быстро проверить пару идей?
C>А идеи без обвязки будут работать?

Зависит от идеи

В C/C++/Java/C# ты даже строчку кода не можешь запустить без main'а

А мне надо сейчас баг решать, с разными вводными данными (небольшим количеством). Прямо в шелле:

> restapi_test:init_mock_oauth().
> da_order_lib:setup_good_user([]).
> [da_order_lib:make_order() || _ <- lists:seq(1, 7)].


Все, во втором окне запускаю curl для проверки резульатов (проверяем выхлоп REST API на некотором наборе данных, не можем воспроизвести ситуацию из бага).

При этом я тут же могу сделать стопятьсот других полезных вещей


dmitriid.comGitHubLinkedIn
Re: Swift
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.14 15:59
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Вывод типов,

I>паттерн-матчинг,
I>толковые туплы и энумы,
I>замыкания,
I>дженерики,
I>экстеншны,
I>Единицы измерений,
I>Делегирование
I>Кастомные операторы, в т.ч. инфиксные,
I>'монадический' optional

http://rsdn.ru/forum/nemerle/5632578
Автор: VladD2
Дата: 03.06.14

Убило использование подсчета ссылок без автоматического разруливания за зацикливаний. В 21 веке это выглядит дико. Такому языку нужен GC или хотя бы автоматический поиск зацикливаний, как в Руби.

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

Чисто стилистически не понравилась утащенная из GO идея не писать круглые скобки, но всегда писать фигурные.

Плохо, что не поддерживается концепция "все является выражением".

Странно выглядит отсутствие приватных членов в классах (можно я чего-то не заметил?).

В остальном язык ничего. Во многом похож на Немерл.

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

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Swift
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.14 16:04
Оценка:
Здравствуйте, Mamut, Вы писали:

M>многие слбни пускали по поводу какого-то концепта IDE, где выполнение показывалось на ходу. А Apple взяли и реализовали не концепт


О чем речь? Можно по подробнее?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Swift
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.14 16:15
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL


Только на практике репл годится только для поиграться. В больших приложениях нужны более серьёзные средства отладки и управления проектами. В Немерле репл сдох за ненадобностью.

Правильным подходом было бы встроить репл в отладчик. Остановился по точке останова и поигрался с данными с помощью локального репла. Ну, а еще правильнее чтобы можно было код править на лету, как в скриптах. У МС есть Edit & Continue, но слишком много ограничений.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Swift
От: kleng  
Дата: 03.06.14 16:43
Оценка: -1 :)
Здравствуйте, kaa.python, Вы писали:

KP>Если же говорить о разработках Apple, то компания является одним из основных (или даже основным) спонсором LLVM и Clang.


Ключевые слова — спонсор, и "один из". Не владельцы проекта.
Re[2]: Swift
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 03.06.14 16:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Убило использование подсчета ссылок без автоматического разруливания за зацикливаний. В 21 веке это выглядит дико. Такому языку нужен GC или хотя бы автоматический поиск зацикливаний, как в Руби.


Как в Питоне, наверное. В Руби испокон веков был честный mark & sweep, никакого RC.

В свифте они целились на рантайм-совместимость с Obj-C, а там тот же самый ARC. Трудно было бы добавить честный GC в один язык, не добавив в другой. Ну и скорее всего это дело принципа: обеспечить иллюзию детерминированности и какбы отсутствие тормозов GC, шоб андроид не получился.
Re[5]: Swift
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.14 17:31
Оценка: +1
M>>Ну, на самом деле я на это дело смотрю, как на приятный расширенный REPL

VD>Только на практике репл годится только для поиграться. В больших приложениях нужны более серьёзные средства отладки и управления проектами. В Немерле репл сдох за ненадобностью.


Правильно. Что надо сделать? Придумать за оппонента тезис, мол, REPL заменяет какие-то там средства отладки и т.п. И давай — шашку наголо и бороться с этим тезисом. Про Немерле смешно, да.

Вот у нас большое приложение. Общее количество кода около миллиона строчек. Ничего, в разработке и REPL применяется, и «более серьёзные средства отладки». Но да, но да, «В Немерле репл сдох за ненадобностью» ©


dmitriid.comGitHubLinkedIn
Re[6]: Swift
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.14 17:58
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Правильно. Что надо сделать? Придумать за оппонента тезис, мол, REPL заменяет какие-то там средства отладки и т.п. И давай — шашку наголо и бороться с этим тезисом. Про Немерле смешно, да.


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

M>Вот у нас большое приложение. Общее количество кода около миллиона строчек. Ничего, в разработке и REPL применяется, и «более серьёзные средства отладки».


Ну, расскажи как вы там репл в большом приложении применяете.

M>Но да, но да, «В Немерле репл сдох за ненадобностью» ©


Да, сдох. И единственная причина — не нужен никому на практике. Был бы нужен давно реанимировали. За все время вопрос о нем поднимался ровно один раз и успешно заглох.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Swift
От: Mamut Швеция http://dmitriid.com
Дата: 03.06.14 18:49
Оценка: 5 (1) +2
M>>Правильно. Что надо сделать? Придумать за оппонента тезис, мол, REPL заменяет какие-то там средства отладки и т.п. И давай — шашку наголо и бороться с этим тезисом. Про Немерле смешно, да.

VD>Я ничего не придумывал. Просто сказал, что он особо не нужен на практике.


Извини, но вот это:

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

это именно придумывание.

M>>Вот у нас большое приложение. Общее количество кода около миллиона строчек. Ничего, в разработке и REPL применяется, и «более серьёзные средства отладки».


VD>Ну, расскажи как вы там репл в большом приложении применяете.


В этой ветке
Автор: Mamut
Дата: 03.06.14



M>>Но да, но да, «В Немерле репл сдох за ненадобностью» ©


VD>Да, сдох. И единственная причина — не нужен никому на практике. Был бы нужен давно реанимировали. За все время вопрос о нем поднимался ровно один раз и успешно заглох.


Немерл. И на практике. И «большие приложения». Извини, но количество взаимоисключений тут слишком велико.


dmitriid.comGitHubLinkedIn
Re[7]: Swift
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.06.14 19:41
Оценка: +1
Здравствуйте, VladD2, Вы писали:

M>>Правильно. Что надо сделать? Придумать за оппонента тезис, мол, REPL заменяет какие-то там средства отладки и т.п. И давай — шашку наголо и бороться с этим тезисом. Про Немерле смешно, да.


VD>Я ничего не придумывал. Просто сказал, что он особо не нужен на практике.


M>>Вот у нас большое приложение. Общее количество кода около миллиона строчек. Ничего, в разработке и REPL применяется, и «более серьёзные средства отладки».


VD>Ну, расскажи как вы там репл в большом приложении применяете.


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

скажем, рестарт сервера занимает несколько минут. проверить вырианты одной функции, это на пару секунд на каждый. Без репл это превращается в часы отладки.

M>>Но да, но да, «В Немерле репл сдох за ненадобностью» ©


VD>Да, сдох. И единственная причина — не нужен никому на практике. Был бы нужен давно реанимировали. За все время вопрос о нем поднимался ровно один раз и успешно заглох.


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

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