Обновить
62
2.2

Programmer

Отправить сообщение
Я вот не понимаю — зачем делать новый дизайн? Старый был вполне юзабелен. Да и предыдущий перед старым тоже вполне юзабелен. Но старые хотя-бы работали. А этот…
У меня заголовки сломались, не отображаются вообще, и судя по сообщениям этой темы не только у меня. Раньше такое было на сайте журнала хакер, а теперь еще и на хабре. Что делать будете?
Отсутствие модульности, которую пытались ввести в C++17 но так и не ввели.
Инклуды это древнее и крайне примитивное средство имитации модульности. Каждый инклуд полностью включается в файл перед компиляцией. Таким образом, время сборки проекта резко увеличивается по сравнению с другими языками, в которых модульность есть.
Всякие precompiled headers это по сути костыли.
Шаблоны также существуют только в инклудах, их невозможно экспортировать в бинарные библиотеки.
Интересная статья, люблю такие обсуждения, хоть и не могу с большей частью доводов согласиться. Основные проблемы дизайна С++ — это инклуды и препроцессор, а также использование шаблонов для метапрограммирования. Еще можно отметить то, что имя массива эквивалентно адресу первого элемента массива, что делает массивы «не-объектами» из-за экономии лишнего символа & (унифицированное взятие адреса).
А что касается цикла for, то тут интересно вот что. Существует два «фундаментальных» способа доступа к коллекциям — последовательный и произвольный. Для произвольного существует общепринятая операция — квадратные скобки (индексация массивов и позже доступ к элементам ассоциативного массива). А для последовательного доступа такой операции нет. Обычно делают какой-то интерфейс итератора с методами типа First(), Next(), IsEnd() и т.п. (причем во всех языках они называются по-разному и логика работы немного разная). А хотелось бы придумать что-то общепринятое и в виде операции, а не методов интерфейса. И вообще максимально упростить этот аспект языка.
Кстати было бы интересно составить таблицу основных независимых друг от друга эмоций и определить, сколько измерений в пространстве эмоций человека :)
А оно реально работает? Нет, я конечно скачаю и попробую, но что-то мне кажется что если прижать палец к объективу камеры, то камера ничего кроме темноты не увидит:)
И это вроде измеритель пульса?, а хочется именно график как на кардиограмме.
Я имел в виду скорее максимально простое и дешевое, но аппаратное решение. Хабраюзеры--любители всяких гаждетов и электроники наверняка ориентируются на алиэкспрессе и подобных сайтах лучше меня, может чего видели…
А кто нибудь знает какой-нибудь самый дешевый (китайский?) кардиограф, без наворотов типа «чехла для айфона», а просто чтобы к компу подключался по любому интерфейсу (скорее всего usb?) и софтом мерял кардиограмму? Или может быть какой-то электронный стетоскоп (с микрофоном внутри), который можно воткнуть в звуковую карту и тоже с помощью софта увидеть пульсации сердца в виде графика на экране. Интересует просто поиграться (ну и чтобы было на всякий случай), т.е. самое дешевое, чтобы заказать было не жалко.
А вот интересно, проанализировав такое количество кода, не приходили ли вам в голову какие-то идеи что можно улучшить и/или исправить в С/С++ (в том числе с нарушением обратной совместимости), или что можно было бы сделать изначально по-другому, чтобы различных ошибок было меньше?
Мне новые языки обычно интересны тем что в них что-то есть :)
C++ получится «монстром» не потому что в нем 100500 вариантов синтаксического сахара, а потому что огромная его часть (метапрограмминг на шаблонах) была «случайно открыта», а не «спроектирована». Соответственно мы получили то что я называю «все кишки наружу», когда код, который должен находиться внутри компилятора и не быть доступным программисту, оказывается в библиотеках типа Буста. Ну и отсюда неудобочитаемые километровые сообщения об ошибках в шаблонах и прочие странности. И еще вдобавок наследие Си: древняя и дремучая система include вместо нормальной модульности, и древний и дремучий лексический препроцессор вместо синтаксических макросов. Который когда-то был отдельной программой (это же так в стиле Unix-way) а затем намертво прирос к языку.
Rust же задумывался как язык ограничений. При том что в нем сразу были продуманы и модульность, и синтаксические макросы, и функциональное программирование — тем ни менее было продумано и много ограничений. Не знаю, возможно кому-то это и нравится но мне не очень.
Можно подумать что ООП это что-то такое супер высокоуровневое. Задач для ООП в системном программировании предостаточно, в том же ядре линукса множество вещей написано в ООП-стиле, пусть и на Си.
Искренне не понимаю зачем, когда придумывают новый язык, первым делом берут и выкидывают что-то уже хорошо известное и отлаженное миллионами программистов за десятки лет. Вот чем их не устраивало классическое ООП в стиле «си с классами»? Я не против типажей rust и интерфейсов go, на самом деле это очень интересные и полезные фичи (и хорошо бы чтобы они появились в С++), но зачем при этом отказываться от старого и доброго? Почему нельзя просто добавить новое к существующему.
Нет, конечно есть такие вещи которые лучше пересмотреть полностью и не повторять (например метапрограмминг на шаблонах в С++ — вместо него нужны нормальные синтаксические макросы), но самые простые основы, понятные всем и каждому, выкидывать все-же не стоит. Причем ломают-то именно «ради оригинальности» «чтобы было не как у всех», а не по какой-то осмысленной причине.
Интересно, а как соотносятся и взаимодействуют в Objective-C++ лямбда-функции из C++ и блоки из Objective-C?
Как бы то ни было, но helloworld должен занимать несколько десятков байт, не более. На любой архитектуре, любой ОС и в любом году. Если это не так — это проблемы архитектуры и ОС, а не стереотипы из какого-то там года,
Да тут все проще. Сам null — вполне нормальное явление. Но некоторые типы нуллабельны по умолчанию, некоторые — ненуллабельны. И получается так, что это свойство типа неявное, оно как-бы спрятано внутри самого типа. То есть когда вы имеете дело с типом T, вы заранее не знаете, может ли он быть null, или нет.
А если бы например при разработке языка ввели правило, что T — это всегда ненуллабельный тип, а скажем T? — всегда нуллабельный, вероятно ясности было бы больше.
Интересно, а можно ли было ссылочные типы объединить с optional? То есть, иными словами можно ли на уровне языка любой ссылочный тип рассматривать как optional у которого null — значение none?
Или может быть можно сформулировать иначе: возможно ли (опять на уровне языка) сделать optional таким, чтобы любой ссылочный тип рассматривался как optional, но при этом была возможность явно указать что данный ссылочный тип не может иметь значения null (атрибут NotNull?)
Вопрос «что это» предполагает глубокое осмысление сути, понимание устройства и архитектуры современных веб приложений.

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

И в общем эти два вопроса особо и не связаны. Но человек, который хорошо понимает «что это», скорее всего со сложностями в вопросах установки даже не столкнется — для него это также естественно как набирать текст. А вот если человек не понимает ничего, то инструкция «как установить» ответа на вопрос «что это» ему не даст.
Вы поймите, у вас скорее всего замечательный проект (на самом деле очень немногие могут похвастаться чем-то подобным даже здесь). Но минусуют вас именно за форму подачи материала.
Да, возможно рассказывать про интерактивную среду разработки в статической текстовой статье без видео было бы не совсем правильно — сложно в тексте описать все то что вы сделали. Но и чисто видео без всего — это тоже не формат данного ресурса.
Сделайте нормальную статью. Расскажите про историю развития проекта, про основные идеи, фичи и причины их возникновения, расскажите какие проблемы решает ваша разработка, есть ли аналоги, в чем преимущества по сравнению с другими подходами. Сделайте иллюстрации, возможно анимированные гифки. И в конце добавьте видео (на русском языке) для тех кто хочет подробностей — тогда отношение будет совсем другое.
Вы конечно можете возразить — не слишком ли мы много хотим, что нам еще и гифки подавай. На самом деле это не «мы хотим» — в данном случае именно вы хотите, чтобы ваша идея стала популярной, а это лишь совет о том, как сделать лучше :)
Да я этот С-- смотрел когда еще Хабра не было:)
А к той статье вроде бы даже писал комментарии… странный язык. С одной стороны доступ к низкоуровневым вещам это приятно (хотя даже в Borland C++ был прямой доступ к регистрам через _AX, _BX и т.д.), но вот с другой — отсутствие приоритетов операций ставит на языке жирный крест.
Хочу заметить что для новичков это все равно бесполезно. Ну то есть инструкция то конечно хорошая и подробная, но основной вопрос который возникает у новичков по каждому компоненту — «что это вообще такое и для чего оно используется». Когда становится понятно «что это», вопрос «как установить» уже решается простейшим гуглением.
Вообще говоря мне и бешеное изобилие опций командной строки того же gcc не нравится. Я бы предпочел, чтобы опции задавались в структурированном декларативном виде в файле проекта (идеально в json-подобном формате), который был бы единственным аргументом для gcc и заменой как опций gcc, так и make-файлов.

Информация

В рейтинге
1 213-й
Зарегистрирован
Активность