Комментарии 15
А чего это убивает? Просто решает свои приоритетные задачи. Хотя и ценой большого количества ключевых слов, что в целом то говорит о стремлении решать частные вопросы здесь и сейчас.
Ну так и Kotlin вот такой же, там тоже довольно много сахара.
SWIFT не знаю совсем. Тем не менее: вроде одно логически вытекает из другого, не?
«Swift превратился в гигантскую, сверхсложную кучу специальных случаев, специального синтаксиса, специальных решений...».
из
Есть только один способ решить задачу.
Задач-то бесконечное количество, соответственно, для каждой из них язык должен предоставить то самое специальное решение.
Вы забыли про пункт с простотой языка, но даже так, для примера, при решении уравнения "x+y", какими бы числами не были переменные, всё равно будет происходить сложение. И, согласитесь, лучше иметь один способ его выполнить (вместо бесконечности :).
Вы забыли про пункт с простотой языка
Как уже писал, совсем его не знаю. Правда, пару раз случалось просматривать код – и прямо скажу, он вовсе не показался мне простым. Обычно я неплохо понимаю код на незнакомых языках, но это не тот случай – многое навскидку неочевидно. Да и как-то плохо сочетается декларированная простота с тем самым
превратился в гигантскую, сверхсложную кучу
Могу предположить, что в этом и проблема: задачи в области применения языка не решаются ограниченным набором простых средств при сохранении приемлемой эффективности. Поэтому приходится идти на усложнение, противоречащее изначально заложенной в язык философии. И вряд ли с этим что-то можно поделать: всё же языки разрабатываются для решения бизнес-задач, а не для удовольствия программистов, и если бизнес требует добавления в него конструкций, ускоряющих процесс разработки, это обязательно произойдёт.
Вы забыли про пункт с простотой языка
Как уже писал, совсем его не знаю. Правда, пару раз случалось просматривать код – и прямо скажу, он вовсе не показался мне простым. Обычно я неплохо понимаю код на незнакомых языках, но это не тот случай – многое навскидку неочевидно. Да и как-то плохо сочетается декларированная простота с тем самым
превратился в гигантскую, сверхсложную кучу
Могу предположить, что в этом и проблема: задачи в области применения языка не решаются ограниченным набором простых средств при сохранении приемлемой эффективности. Поэтому приходится идти на усложнение, противоречащее изначально заложенной в язык философии. И вряд ли с этим что-то можно поделать: всё же языки разрабатываются для решения бизнес-задач, а не для удовольствия программистов, и если бизнес требует добавления в него конструкций, ускоряющих процесс разработки, это обязательно произойдёт.
Абсолютно согласен с мнением Криса Латнера - язык свернул куда-то не туда. Раньше был простой и ясный - это даже ставилось в преамбулу, а сейчас уже натащили макросов и боровинг из Раста. Для писателей фреймворков и библиотек это может быть хорошо, но для обычных разработчиков надо работу делать с меньшей головной болью. А тут каждый год нововедения, которые нужно изучить и научиться применять, потому как любители обязательно новинку затащат в проект.
ЗЫ. Замерял как кто скорость компиляции не сильно большого проекта: со всеми красивостями языка 100с была. Переделал на использование минимального набора языковых средств только for, if без всяких лямбд и прочего, время компиляции стало 72с ...
ЗЫЫ хочется похожего же языка, но с "перламутровыми пуговицами" и не от одной компании "диктатора".
Это проблема большинства языков. Всё начинается просто и ясно, но со временем обрастает фичами, новыми инструментами/фреймворками и сахаром.
Ну или по крайней мере я не знаю ни одного массового используемого языка с которым такого не произошло за десять лет существования.
Я очень удивился когда они в одной из ранних версий убрали операции инкремента и декремента (++ и --). Вероятно это и есть то самое "есть только один способ решить задачу" :) Как по мне, так эти операторы уже стали стандартом де-факто, почти все языки их используют и все программисты знают и пишут на автомате.
Я хоть и не пишу на Swift, но по причине моего теоретического интереса к языкам программирования как таковым, могу сказать что язык весьма приятный. Не без странностей конечно (но у какого языка их нет?), но приятный.
Кстати, одна из странностей ИМХО - наличие "внутренних" и "внешних" имен аргументов функций. Кто нибудь знает зачем это сделали?
Это сделали для "выразительности" языка, то есть, чтобы удобнее было читать
// Какой-то массив элеменов
var someArray = ["s1", "s2"]
// Вот так объявляем функцию с первым аргументом без внешнего имени и вторым аргументом с внешним и внутренним именем
func setSome(_ element: String, at index: Int){
someArray[index] = element
}
// Вот так ее вызываем
setSome("s3", at: 0)
// То же самое, но второй аргумент только с одним именем (одинаковым как внешнее и внутреннее)
func setSome2(_ element: String, index: Int){
someArray[index] = element
}
// Вот так вызываем
setSome2("s3", index: 0)
// Тоже самое, но первый аргумент с одинаковым внешним и внутренним именем
func setSome3(element: String, index: Int){
someArray[index] = element
}
// Вот так вызываем
setSome3(element: "s3", index: 0)
Кстати, одна из странностей ИМХО - наличие "внутренних" и "внешних" имен аргументов функций. Кто нибудь знает зачем это сделали?
А Objective C знаете? После него очень понятно.
По моему личному ощущению языки, на которых пишется много фронтенда, обречены на слишком сильное усложнение. Это естественная тенденция в текущих условиях.
Когда прочитал название статьи, почему то подумал что apple имеет какие-то планы на международные переводы, как же я ошибался
Swift изначально был ужасно спроектированным языком, знаю его с первой версии. Лучший пример слова "оверинжиниринг". Взять только реализацию массивов и словарей, от чего многие продолжали использовать нетипизированные NS* версии. А компилятор, который показывал все что угодно но не причину ошибки?
Когда подключилось сообщество, то очень многие проблемы стали потихоньку решаться. Но в любом случае он остается языком "одной платформы", и довольно неудачным языком. А Apple доказала что не может разработать ни хороший язык, ни, после выхода SwiftUI, хороший фреймворк. Про ужасную среду разработки даже вспоминать не хочу.
По итогу ушел в разработку на TS на React Native и не планирую возвращаться ни при каких обстоятельствах.
Apple убивает Swift