Pull to refresh
3
0

Разработчик

Send message

Блин, гадский парсер сожрал смайлик. И редактировать не даёт. Надеюсь, было понятно, что это шутка.

небинарного черного мужчину-инвалида

Да вы сексист, батенька!

У меня за плечами большое количество языков

У меня тоже немало. Для меня var: Type легче читать, чем Type var, несмотря на то, что я пишу в основном на C++.

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

Есть плохой пример Python 2 => 3, было больно и грязно.

У меня сложилось впечатление, что проблема была скорее в интерпретируемой природе питона. Т.е. для плавного перехода требовалось, чтобы один интерпретатор понимал оба диалекта, умел различать файлы на разных диалектах в одной программе и умел их комбинировать. В случае с компилируемыми языками (в машинный или байткод) это тоже может быть болезненно, но не в такой степени. Если сильно припрёт, можно работать в сторону совместимости на уровне межмодульных бинарных интерфейсов. Тогда скомпилированные модули версий языка 1.х и 2.х вполне могут жить вместе. Пример этого — взаимодействие модулей одной программы, написанных на разных языках, через C ABI. Сложно, да. Но не неразрешимо. А в случае с питоном вы в принципе не могли бы скрестить в одном месте условную Django для 2.х и условный Numpy для 3.х.

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


Проблема многих языков это лишний символы, которые надо печатать, например begin end вместо {}, и присвоение переменной через <= или +=, $ перед переменной(в шаблонах это нормально), даже с автодополнением на это тратиться много времени.

Java: extends/implements вместо простого ":", ага.


Тут у меня сразу вспоминается дико не удобный objective c, с которым Apple хотела поменять отношение к программированию

Objective-C #History:


  • Objective-C was created primarily by Brad Cox and Tom Love in the early 1980s at their company Productivity Products International (PPI).
  • In 1988, NeXT licensed Objective-C from StepStone (the new name of PPI, the owner of the Objective-C trademark)
  • After acquiring NeXT in 1996, Apple Computer used OpenStep in its then-new operating system, Mac OS X.

Т.е. это одна из первых попыток скрестить С и ООП. Apple его взяли как готовое решение.


Скорее всего котлин был выплюнут на рынок в связи с судебной баталией Оракла и Гугла по поводу JAVA, и нужна была альтернатива для Android.

Google LLC v. Oracle America, Inc.: Prior Oracle Am., Inc. v. Google Inc., 872 F. Supp. 2d 974 (N.D. Cal. 2012);


Kotlin (programming language): First appeared July 22, 2011


человека учат математике и тип всегда слева, и переменной значение присваивают через знак =

В школьной математике типы вообще не пишутся. Это так, к слову. Порядок присваивания тоже никто не менял. А тип слева — наследие семейства С/С++, которое ещё и усложняет парсер и грамматику. Если вы пройдётесь по современным языкам, у большинства аннотации типов именно справа.


мог переплюнуть своей выразительностью C, C++, JAVA, Python

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


Python

Дискутировать не буду т.к. питон использовал крайне мало и давно. Но в целом могу согласиться, питон достаточно лаконичен.


Java

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


C

Насчёт С — это вы серьёзно? Он простой, но я бы не назвал выразительным язык без обобщённого программирования и многих других вещей.


C++

О да. Его пожалуй можно назвать выразительным. Но до появления С++20 обратной стороной этой "выразительности" были километры write-only шаблонного кода, порождавшие такие же километры ошибок.


Вообще же, довольно неплохо видно, что именно наличие сильного конкурента подстёгивает развитие. Активное развитие Java пошло именно в последние годы, когда у неё появился сильный конкурент Kotlin. Активное развитие С++ (выпуск нового стандарта каждые три года) началось, когда его начали активно заменять на другие языки во многих нишах, где С++ исконно доминировал.

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

Я о том, что наличие оператора, позволяющего записывать вызов функции


result range_op(input_range input, arg arg1)

как


input |> range_op(arg1)

сильно упростило бы дело; однако, сейчас поддержка пайпа требует писать новые операторы в виде


struct range_op: public pipe_operator_right_hand
{
    range_op(arg arg1) { ... }
    result operator()(input_range input) { ... }

    arg m_arg1;
};

а в чем конкретно сложность? Написать ленивый генератор на корутинах не сложно, ровно как и реализовать для него begin()/end()

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


опять же, в чем сложность? Ренджи должны принимать любые контейнеры (т.к. оперируют begin()/end(), которые должны быть определены для любого контейнера). Единственная потенциальная сложность в том, что некоторые методы контейнеров принимают одинаковые типы begin/end итераторов, что для ренджей в общем случае не так. Однако и эта проблема решается с помощью common_view, хоть это и не шибко удобно

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

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


  1. Оператор |. Для его реализации требуется определённое шаблонное шаманство, пусть и не сильно сложное. Что менее приятно, для реализации своих рейнджей требуется определённая писанина. Увы, комитет не смог или не захотел внести оператор |> или какой-то аналог.
  2. Насколько я знаю, с поддержкой корутин всё непросто. Написать просто функцию с yield или аналогом, чтобы она сразу стала range-compliant, не выйдет.
  3. Не совсем понятна ситуация с адаптированием своих контейнеров к поддержке рейнджей. До С++17 включительно iterator adaptors в std не пахло.

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

Обобщённое программирование — ключевое преимущество C++. Я знаю не все языки, но ничего подобного и на таком уровне не видел.

Если вы про именно обобщённое программирование, то какой-нибудь Haskell уделывает С++ и по удобству, и по продуктивности. И появление концептов пусть и улучшит ситуацию, но ненамного. Как минимум потому что они необязательные.


Если же вы про метапрограммирование, то примеров гораздо лучших решений хватает. Был такой язык Nemerle. Который позволял полноценное метапрограммирование с использованием квазицитат и паттерн-матчинга по частям AST. Ещё из недавно виденного — Zig и его comptime, который позволяет, к примеру, генерить обобщённые типы в отсутствии дженериков. Тот же Template Haskell, если не ошибаюсь.


Вообще же, шаблоны С++ как инструмент обобщённого или метапрограммирования далеко не предел. И далеко не идеал.

Там не было тьюринг-полных шаблонов, препроцессора и контекстно-зависимой грамматики языка.

Опять кликбейт блин.

Заголовок: "Etsy без объявления заблокировал создание аккаунтов продавцов из России".

В статье: "Etsy заблокировала возможность создавать магазины для продавцов из регионов, где недоступна ее платежная система Etsy Payments".

ничего на Луну не сажал

Не могу согласиться. Если воспользоваться аналогией с мореплаанием, есть три судоходных компании. Первая успешно возит грузы в пределах нескольких соседних портов. Вторая периодически выводит прототип корабля из бухты поплескаться. С третьей вообще непонятно. У кого вы закажете доставку груза на соседний архипелаг?

Я не совсем понял. У Dynetics и Blue Origin уже что-то стабильно летает?

Вычитайте пожалуйста статью. Море опечаток и пропущенных запятых. Я отправил уже 5 штук, не дочитав и до середины.

Совершенно верно. Именно поэтому даже простенькая задача "развенуть строку" не такая уж и простенькая.

del. Уже прокомментировали ниже.

Я, к примеру, настолько привык вместо Home/End/PgUp/PgDn пользоваться Fn+стрелки, что обычная клавиатура уже неудобна.

Не совсем понял. Графика только на кристалле с ЦП? Или есть дискретная?

А существуют ли сейчас подобные варианты офлайн-бэкапа для домашнего и SOHO сегмента? Жёсткие диски в тумбочке не совсем вариант, DVD-R деградируют со временем.

Information

Rating
Does not participate
Location
Украина
Registered
Activity