Как стать автором
Обновить

Комментарии 17

НЛО прилетело и опубликовало эту надпись здесь
Сам язык Swift и LLVM по-большей части написаны на С++
НЛО прилетело и опубликовало эту надпись здесь
Странно почему только все поголовно не пишут на Си, он же такой великолепный)) Я помню высказывания одного программиста Си: «Раньше мужчины еще чувствовали себя мужчинами и сами писали драйверы для устройств»!!! Наверно это из этой серии. Почему то появляются высокоуровневые языки. Обратите внимание на год этого сообщения, 2004?) Наверно кое что уже поменялось с того времени, все например)

Во-первых, 2007, и я не понимаю, как этого можно было не заметить.
Во-вторых, все поголовно пишут на Си. Драйверы, СУБД, системные вещи, серверные приложения.
В-третьих, ниша С++ — это небольшая доля клиентских приложений, небольшая доля серверных приложений, геймдев и всякого рода компиляторы.


Но ты прав, за последнее время действительно все поменялось.


Серверные и веб приложения сейчас уходят в функциональную парадигму, среди мобильных приложений тренд на react-native + native extensions, у десктопных — в Electron.


Я закончил писать на С++ 5 лет назад и с тех пор он мне был нужен только для спортивного программирования, хотя я писал и десктоп, и серверные, и веб, и мобильные приложения. То есть, для чего угодно C++ — это не first choice.

Я очень рад за вас, что вам удалось получить такой обширный опыт в разработке! Кому то нравятся женщины с белыми волосами, кто то предпочитает брюнеток. Специально для вас я оставил пометку, что это сугубо мое личное мнение. Можно бесконечно спорить об этом, но я считаю что если использовать любой инструмент с головой, то все у вас получиться. Выстрелить себе в ногу можно на любом языке, и говорить потом что он уродлив. Мне понравилось ваше высказывание:" небольшая ниша всякого рода компиляторов". Еще странно почему gcc почти польностью переписали на С++ )) Это наверно тоже потому что он для спортивного программирования. Вообще я ничего не имеют против Си, это замечательный язык. Просто все имеет свое применение и важно понимать где это оправданно, а где можно подняться на абстракцию выше, не потеряв в этом значительную часть производительности

В спортивном программировании от всего C++ мне нужно только STL.


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


Swift принес синтаксический сахар, который дал JS'никами и C-шарперам более простой вход в нативную iOS разработку. Примерно тоже самое сделал Elixir с Erlang'ом в вебе. Сейчас Swift постепенно выбирается из своей ниши и становится языком общего назначения. Станет ли — большой вопрос. Apple планирует на него переходить только через два года, что говорит о многом.


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


Anyway, добро пожаловать на хабр. Надеюсь мои комментарии не обидели, и помогут сделать следующие статьи лучше :-)

Swift принес синтаксический сахар, который дал JS'никами и C-шарперам более простой вход в нативную iOS разработку.

Вот уж не знаю, все эти try/try?/try!, generics без возможности явно указать тип при вызове, замыкания с параметрами внутри {}. После c# это дается чуть не сложнее, чем Obj-C.
Круто, что собрали свой тулчейн и поковырялись в исходнидниках свифта, но в чем суть то оказалась? Доказать, что NSObject уродлив? (с этого началось и этим же закончилось) Или показать Ваше исследование? В итоге получилось немного сумбурно.

Ззаметил в статье несколько неточностей как по мне:
Формально конечно базовый класс остался и только для IOS платформы

все классы Swift которые явно не наследуются от NSObject теперь неявно наследуются от SwiftObject класса. Сразу сделаю поправку, что это имеет место только для IOS платформы. На non-IOS платформах (Linux например) такого нет так как нет необходимости.


А как же тогда macOS, watchOS, tvOS? Под них тоже вполне можно использовать Objective-C с тем же Foundation и NSObject. Писали бы тогда что это справедливо для платформ, в которых есть необходимость взаимодействовать с Objective-C рантаймом.

все классы Swift которые явно не наследуются от NSObject теперь неявно наследуются от SwiftObject класса


Разве? Больше похоже, что это класс, который представляет Swift классы которые наследуются от NSObject в Objective-C рантайме.

На сколько мне известно, не NSObject классы в рантайме Objective-C вообще не могут быть представлены. Пробовали ли Вы посмотреть во что компилится чистый Swift класс есть ли в нем все эти методы? Может у свифтовых структур и енамов они тоже есть?

Зачем эпплу ко всем свифт классам привязывать NSObject методы, если в рантайме Objective-C эти классы представлены быть не могут и в будущем, возможно, свифт будет жить без наследия objc? Как то недальновидно ведь.
По первой претензии согласен, поправил. Второй вопрос не совсем понял, SwiftObject добавлен для того что бы можно было обьекты Swift кастить в id и передавать в Objective C. С перечислениями написанными чисто на свифт само собой это не работает, так как они реализованы совсем по другому, и компилятор заботливо скажет об этом.
Возможно я не прав. Пока не стал ковырятся с собственным тулчейном, но скажу, что в качестве Any (id) оказалось возможным передавать в objective-c функцию и чистые swift классы, и енамы, и структуры, и даже кортежи и дженерики. Внутри функции все это спокойно кастится к NSObject и можно вызвать любой метод NSObject протокола. Больше, конечно, ничего сделать нельзя толкового, так как такой тип в objc не может быть представлен, но факт есть факт. Сдается мне, что SwiftObject представляет в objc не только классы, но и абстракцию над типами, которые не могут быть в нем представлены другим образом. Интересно было бы изучить этот вопрос.
Насколько я ковырял рантайм, там не всё так однозначно. И свифтовые классы точно не наследуются от nsobject. Например, чистый свифтовый класс можно использовать в обжси коде, но его нельзя будет унаследовать. https://github.com/apple/swift/blob/master/test/stdlib/Bridgeable.swift
Спасибо за статью! Было интересно читать.
Начало было захватывающее и не поверхностное, а вот концовки нет. Была хорошая завязка, сюжет, но нет конца…
Согласен с вами, очень хотелось поделиться уже, не дотерпел. В след раз буду писать более развернуто и логическим завершением
… жаждущей новых выделений


Э-э-э, ну да, каждый, конечно, воспринимает в меру своей испорченности, но лучше бы вы писали сухо и по делу — к цветистым «литературным» оборотам (особенно на фоне ужасающей грамматики) вам прибегать еще рановато.
Убрал, что бы не резало глаза.) Что касаемо грамматики каюсь, текст оч сырой и не проверялся на ошибки. Я очень хотел донести суть, надеюсь что то удалось сделать. В след раз буду писать чище и приятнее )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории