Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Так как понедельник, всё плохо, надо начинать жизнь с чистого листа и всё такое, я решил сегодня сделать тему на эту тему. Я сейчас пишу проект, где слишком много вещей, разложенных по контейнерам. Приходится много писать кода для обхода этих контейнеров и совершения различных действий. Как правило, три первые строчки очень похожи друг на друга: первый итератор, последний итератор(в случае неизменности контейнера, чтобы его каждый раз в цикле не вычислять, да, я зануда) и, собственно, цикл. Дальше по контексту. Рука тянется написать макрос, но что-то меня останавливает. К тому же я так и не понял, какие выгоды в данном случае мне дают лямбды. В добавок ко всему, я прочитал триптих Андрея Платова на хабре, и понял, что я не один такой. В общем-то, я это давно понял, когда ещё к ним пытался устроиться на работу, но тут просто все звёзды сошлись. И поэтому у меня возник вопрос, как оптимизировать разработки на сяхх? Какие бонусы мы получили с С11(14), чтобы можно было разрабатывать быстро? Где и как использовать лямбды? Где и как использовать универсальные ссылки и можно ли их как-то успешно использовать на просто функциях в качестве параметров? Это вопросы, за которые я могу пострадать, но хочется разобраться, почему жить стало лучше? С теми же смартпоинтерами я не ощутил радости, потому что когда их не было, все объекты у меня были спроектированы по их принципу, и я никогда не грел голову, что у меня где-то что-то не освободилось, и я недоумевал по поводу прям яростной ненависти многих Продвинутых Разработчиков к наличию delete(или goto) в коде, тем более, что когда-то без него было вообще никак. Да, мне приходилось расписывать деструкторы, и пару-тройку раз я где-нить да на накосячил, но это было пару раз. Сейчас читаю Мейерса "Эффективный и современный С++" и не ощущаю радости. В основном, книга сводится к "было сказано <%1%>, а я говорю вам <%2%>", иными словами, делайте теперь вот так, вместо того, как вы делали раньше вот так. Да, лямбды сделали работу чуть быстрее и гибче, ключевое слово "чуть" пока что для меня. Да, теперь в шаблонах есть универсальные ссылки, избавляющие нас от дублирования описания, как это было раньше, но кто-то раньше от этого сильно страдал? Я нет, я просто следил, за тем, что я передаю в эти функции и плясал от этого. С теми же смартпоинтерами можно более завуалировано(хрен сразу увидишь) накосячить, чем раньше открыто забыть что-то грохнуть. Т.е. по принципу того же Платова: сложность языка увеличилась, а скорость разработки как-то не очень. Я пока это не вижу. И это не наезд на С++, это попытка понять, как теперь разрабатывать? Потому что если смотреть с т.з. скорости и удобства на книгу Майерса, то... ничего в общем-то и не поменялось... :[ 28.06 мне пришла в голову идея проекта, 30-го я начал делать прототип. Так как я читаю Скотта, то решил всё делать по науке, потому что пока тренироваться не на чем, в результате у меня до сих пор нету прототипа, хотя я потратил примерно часов 7-8 на разработку. Меня это печалит, сейчас я занимаюсь тем, что пытаюсь сделать енумератор с произвольным доступом для данных, основанный на контейнерах, и мне нифига не легче, чем лет 3-5 назад. Т.о, самое главное, ради чего собственно создавалась тема(а не чтобы поплакать): поделитесь технологиями и приёмами, увеличивающими скорость/качество разработки. И как в этом был использован С++11/14? Btw, есть (кроме буста) какие-то стандартные библиотеки для работы с xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 09:44 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbBtw, есть (кроме буста) какие-то стандартные библиотеки для работы с xml? У буста нет библиотеки для нормальной работы с xml. Я пользуюсь libxml2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 10:17 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
YesSql, спасибо, посмотрю. От xml-я мне требовалось только разобрать дерево в файл, собрать дерево из файла, так что буст справлялся. Мне просто было интересно, появились ли какие стандартные средства. Надежд было мало, но вдруг... Возвращаясь к напечатанному, одно время я сильно велосипедил и страдал от самого факта, от того, что велосипедить - это плохо. У меня было много проектов под Win32, для начала я сделал небольшую иерархию классов и заглушек, которая была похожа на MFC, что дало мне возможность использовать студийный класс-виззард. Это ладно, фигня. Больше всего я "страдал" от надстройки над вектором, которая под собой скрывала те самые вещи, в три строки, которые я выше описал. Эти вещи касались сериализации и прочей стандартной обработки, т.е. когда меня надо было контейнер с параметрами скинуть/зачитать из файла/реестра, я не писал циклов, я просто звал 1 соответствующую функцию. Там же внутри были всякие базовые проверки. В результате у меня на этой базе выросло нечто, что позволило мне связать сложные структуры данных с системами хранения, независимо от самих систем, и с GUI. И это было удобно! Кто помнить MFC-шный DDX? Там надо было написать макрос на 1 параметр/контрол, потом в коде звать UpdateData в нужных местах( позже я увидел что-то подобное с событиями в QT, но у меня они были привязаны к Win32, да). У меня была ровно одна строчка для привязки контрола к параметру. При этом можно было 1 параметр привязать к нескольким контролам, и если один из них менялся юзером, система автоматом меняла остальные, без всяких вызовов UpdateData(где надо помнить, TRUE/FALSE - в какую сторону), при этом я получил бонусом, что изменяемые параметры накатывались сразу, прям во время работы с контролами, в программу, и юзер мог видеть, как оно, не нажимая каждый раз OK, чтобы посмотреть, чего и как настроилось, и там же была система отката по кнопке Cancel(правда, надо было ещё одну строчку написать в OnCommad, но не беда), потому что в классе параметра была система для Backup/Restore. Это всё экономило мне уйму времени, вкупе с шаблонами-кубиками для построения приложений, которые у меня появились в процессе разработок. Вот есть сейчас что-то такое, чтобы можно было не велосипедить, а взять из коробки, чтобы работало быстро и всё умело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 10:48 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 11:31 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
mayton, да, он самый. Придумыватель Силиконовой Тайги. блин, только сейчас увидел ошибку в первом слове, вот так всегда :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 13:13 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
В ту же сторону https://habrahabr.ru/post/259993/ Сравнение Nim и Rust, причем пример программы wordcount на D есть в комментах и он лучше. По топику - эволюция с++ в плане удобства разработчика: -STL дала безопасность -лямбды дали удобство там, где получались страшненькие по виду каллбэки -крупные библиотеки типа буста уменьшили велосипедостроение Из неудобства: -пострадала переносимость между компиляторами. Не все компиляторы нормально поддерживают новые фичи. Раз - и ты не можешь использовать любимую библиотеку, потому что не собирается либа. -бинарная совместимость С++ ужасна -внутренний код шаблонных библиотек нечитаем Остальное меня не затронуло, но я мало пишу на С++, предпочитая из-за удобства разработчика С# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 13:19 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
а как же Код: plaintext 1. ? зачем итераторы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 13:30 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Siemargl-бинарная совместимость С++ ужасна ..... Остальное меня не затронуло, но я мало пишу на С++, предпочитая из-за удобства разработчика С# Бинарная совместимость у С# еще хуже .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 13:33 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
По моему мнению - оптимизация разработки, это сокращение возможных ошибок. Чем больше ошибок найдет компилятор, тем меньше их найдет пользователь. К тому же компилятор покажет пальцем, а пользователь - нет. А отсюда - константность, шаблоны, static_assert, override, enum class. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 13:34 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Siemargl, мне не понравилась слишком вольная форма подачи материала и завышенная самооценка автора. Типа я тут такой "Луговский" всех синьоров на вертел.... "му**к... ужратый пивом..." прилагается. Это по поводу трех статей https://habrahabr.ru/post/259831/ https://habrahabr.ru/post/259841/ https://habrahabr.ru/post/260149/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 14:13 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
mayton https://habrahabr.ru/post/260149/ авторТезис о том что язык — есть инструмент для создания программного обеспечения, для меня неоспорим, из из этого вытекает мое требование к языку об увеличении производительности команды. Практика же показывает, что далеко не многие ведут разговор о языках с этой позиции. Какая прелесть ... Команда это конечно же маркетинг и саппорт, всех возможных и не возможных монетизациях .... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2016, 14:23 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SiemarglПо топику - эволюция с++ в плане удобства разработчика: -STL дала безопасность -лямбды дали удобство там, где получались страшненькие по виду каллбэки -крупные библиотеки типа буста уменьшили велосипедостроениеа можно про это подробнее? Остальное меня не затронуло, но я мало пишу на С++, предпочитая из-за удобства разработчика С# Ну вот... о_О alex_kа как же Код: plaintext 1. ? зачем итераторы?Спасибо, надо будет глянуть, что там внутри. Btw, на 2010-й студии всё-таки какой компилятор? Он такую конструкцию не понимает. auto понимает. alex_kПо моему мнению - оптимизация разработки, это сокращение возможных ошибок. Чем больше ошибок найдет компилятор, тем меньше их найдет пользователь. К тому же компилятор покажет пальцем, а пользователь - нет. А отсюда - константность, шаблоны, static_assert, override, enum class.Это всё да, но хотелось бы какого-то повышения уровня абстракций :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 06:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
авторСпасибо, надо будет глянуть, что там внутри. Там внутри begin() и end() контэйнера, которые обязаны вернуть объект, который может ++, != и *. Для последовательного набора элементов проканает и обычный указатель :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 06:46 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMb, так используй for(:) там не надо никаких итераторов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 09:55 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
alex_kавторСпасибо, надо будет глянуть, что там внутри. Там внутри begin() и end() контэйнера, которые обязаны вернуть объект, который может ++, != и *. Для последовательного набора элементов проканает и обычный указатель :) Вот end() меня напрягает, что его каждый раз оно скрыто считать будет. Метод универсальный, да, но часто end() за весь цикл один и тот же. MasterZivCEMb, так используй for(:) там не надо никаких итераторов...не понял о_о У меня ещё вопрос по 11 сямм. Если у меня, например, конструктор принимает r-ссылку, есть 2 оператора =, с r-ссылкой и с константной ссылкой (const Cls& и Cls&&), то почему при вызове из этого конструктора вызывается оператор = для работы с константной ссылкой, а не rvalue-ссылкой? Приходится кастовать заново std::move. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 10:17 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
. К тому же я так и не понял, какие выгоды в данном случае мне дают лямбды. никаких. для лямбды надо применять не циклы, а функции высших порядков, transform, for_each и так далее. И поэтому у меня возник вопрос, как оптимизировать разработки на сяхх? э... ммм... как это? Может кодирование? Какие бонусы мы получили с С11(14), чтобы можно было разрабатывать быстро? ну, много их, тот же for(:) Где и как использовать лямбды? выше сказал. еще можно добавить, раньше было такое понятие"фукнтор", вот везде, где его нужно было применять, теперь можно использовать лямбды. Это проще, более кратко и понятно. Где и как использовать универсальные ссылки и можно ли их как-то успешно использовать на просто функциях в качестве параметров? я и сам возможно пока не знаю, но мне кажется, что их применение на 80 или более процентов связано с кодирование библиотек, а не конечного кода. Сейчас читаю Мейерса "Эффективный и современный С++" и не ощущаю радости. Радость - она не здесь, радость - это уйти в открытое море на парусной яхте или с шорохом лететь с вершины вниз по снежной целине на доске, когда вокруг только снег, горы и верные друзья... А тут тебе просто дали новую автоматическую отвертку, чтобы тебе было удобнее крутить шурупы. Чуть больше комфорта, и всё. дальше у тебя непонятно... Т.е. по принципу того же Платова: сложность языка увеличилась, а скорость разработки как-то не очень. кто такой Платов, я не знаю, но скорость разработки в общем скорее не этим всем определяется. Я пока это не вижу. И это не наезд на С++, это попытка понять, как теперь разрабатывать? Потому что если смотреть с т.з. скорости и удобства на книгу Майерса, то... ничего в общем-то и не поменялось... :[ ну, на самом деле очень многое поменялось. 28.06 мне пришла в голову идея проекта, 30-го я начал делать прототип. Так как я читаю Скотта, то решил всё делать по науке, потому что пока тренироваться не на чем, в результате у меня до сих пор нету прототипа, хотя я потратил примерно часов 7-8 на разработку. Меня это печалит, сейчас я занимаюсь тем, что пытаюсь сделать енумератор с произвольным доступом для данных, основанный на контейнерах, и мне нифига не легче, чем лет 3-5 назад. Ну, если у тебя личный затык, при чем тут язык и изменения в нем? я бы вообще не делал энумераторы, соотнеси множество твоих объектов с множеством натуральных целых, и все пока, а потом, когда все сделаешь, сверху прилепишь итератор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 11:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZiv. К тому же я так и не понял, какие выгоды в данном случае мне дают лямбды. никаких. для лямбды надо применять не циклы, а функции высших порядков, transform, for_each и так далее. ясно, надо изучать и пробовать, чтобы разобраться. И поэтому у меня возник вопрос, как оптимизировать разработки на сяхх? э... ммм... как это? Может кодирование? для примера: можно вскапывать огород лопатой, а можно взять мотоблок, и всё пойдёт быстрее. Или плуг. Или экскаватор. Или динамит. Вариантов много под разные нужды. А можно вообще руками, да. Какие бонусы мы получили с С11(14), чтобы можно было разрабатывать быстро? ну, много их, тот же for(:) а ещё? Сейчас читаю Мейерса "Эффективный и современный С++" и не ощущаю радости. Радость - она не здесь, радость - это уйти в открытое море на парусной яхте или с шорохом лететь с вершины вниз по снежной целине на доске, когда вокруг только снег, горы и верные друзья... Хочется от коддинга тоже получать радость. Я вот один проект делаю на стороннем фреймворке, у которого есть "наследование" в классах через динамический eject объектов в класс-ноду. Это даёт возможность быстро и удобно наполнять объекты нужными свойствами и другими объектами, а так же быстро с ними работать. Вот коддинг, а особенно разработка архитектуры в этой среде у меня вызывает радость, хотя бы потому что способствует придумыванию многих интересных решений. Просто потому что архитектура такая. А тут тебе просто дали новую автоматическую отвертку, чтобы тебе было удобнее крутить шурупы. Чуть больше комфорта, и всё. Хочу больше отвёрток. Как в той же яве. дальше у тебя непонятно... Т.е. по принципу того же Платова: сложность языка увеличилась, а скорость разработки как-то не очень. кто такой Платов, я не знаю, но скорость разработки в общем скорее не этим всем определяется. Не, он приводил в пример Scala, как сильно усложнённый язык, приводил аргумент, что допускает, если усложнение языка даёт ускорение разработки. Как оправдание усложнению. Т.е. зачем делать язык сложнее, если это ничего (кроме понтов) не даёт? Поэтому, почитав про 11/14, я вижу усложнение языка, и задаю вопрос, что мы получили взамен за это усложнение. Я пока это не вижу. И это не наезд на С++, это попытка понять, как теперь разрабатывать? Потому что если смотреть с т.з. скорости и удобства на книгу Майерса, то... ничего в общем-то и не поменялось... :[ ну, на самом деле очень многое поменялось. с т.з. скорости и удобства? 28.06 мне пришла в голову идея проекта, 30-го я начал делать прототип. Так как я читаю Скотта, то решил всё делать по науке, потому что пока тренироваться не на чем, в результате у меня до сих пор нету прототипа, хотя я потратил примерно часов 7-8 на разработку. Меня это печалит, сейчас я занимаюсь тем, что пытаюсь сделать енумератор с произвольным доступом для данных, основанный на контейнерах, и мне нифига не легче, чем лет 3-5 назад. Ну, если у тебя личный затык, при чем тут язык и изменения в нем? да, у меня затык, но всё из-за того самого велосипедостроения. я бы вообще не делал энумераторы, соотнеси множество твоих объектов с множеством натуральных целых, и все пока, а потом, когда все сделаешь, сверху прилепишь итератор. у меня там мапа. Хочется, чтобы сторонний алгоритм, не задумываясь про индексы и внутреннюю структуру вообще, говорил мапо-содержащему объекту что-то типа GetFirst/GetNext, получал некий объект из мапы и работал с ним, сам решая, брать следующий или нет. Т.е. цикл отвязан от мапы. Но эту проблему я решил, вчера после написания "статьи", я просветлился, взглянул на свой код иначе, и всё переписал, как надо :) так что теперь в случае затыков, буду практиковать тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 12:47 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbХочется от коддинга тоже получать радость. Я вот один проект делаю на стороннем фреймворке, у которого есть "наследование" в классах через динамический eject объектов в класс-ноду. Это даёт возможность быстро и удобно наполнять объекты нужными свойствами и другими объектами, а так же быстро с ними работать. Вот коддинг, а особенно разработка архитектуры в этой среде у меня вызывает радость, хотя бы потому что способствует придумыванию многих интересных решений. Просто потому что архитектура такая. Радует твоя способность вносить шум в обычные слова. Коддинг это что? Изучение трудов Эдгара Кодда? И кстати, хотел-бы напомнить что разработчик получает деньги за реализацию фич или возможностей а не за "придумывание интересных решений". Тот-же "Донской козак" Платов писал об этом в перерывах между буханием пива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 12:58 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Т.е. зачем делать язык сложнее, если это ничего (кроме понтов) не даёт? Поэтому, почитав про 11/14, я вижу усложнение языка, и задаю вопрос, что мы получили взамен за это усложнение. Я был на семинаре по Scala где нам предлагалось поставить среду + некие учебные примеры. Они назывались Koans. (впоследствии я узнал что Коан - это какая-то сущность в дзен-буддизме но не суть) И вобщем необходимо было помедитировав - понять как пофиксить фрагменты кода чтобы Юнит-тесты выдали ок. Я признаюсь честно что едва-ли выполнил 50% от всех коанс за нужное время. А между тем со мной в аудитории сидели juniors у которых были такие-же резалты. Вобщем это было похоже на IQ тест в котором невозможно набрать высокий бал буду чи просто знающим. Нужно было толи хапнуть нейростимуляторов толи действительно курить вещеста. После этого у меня началось некое органическое неприятие Scala. Все их тюторы и примеры мне стали казаться слишком заумными и надуманными. Тот-же Груви с Котлином решали похожие задачки так-же но проще и органичнее. Вобщем если ты хочешь казаться умным - то бери Scala. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:07 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbВот end() меня напрягает, что его каждый раз оно скрыто считать будет. Метод универсальный, да, но часто end() за весь цикл один и тот же. Ваше стремление оптимизировать код похвально. Веселит только ваша уверенность что вы это сделаете лучше самого компилятора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:26 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonРадует твоя способность вносить шум в обычные слова. Коддинг это что? Изучение трудов Эдгара Кодда?Написание кода. maytonИ кстати, хотел-бы напомнить что разработчик получает деньги за реализацию фич или возможностей а не за "придумывание интересных решений"Ну я и тем и другим занимаюсь. В том и прелесть, я придумываю всё мне ставят довольно общие, абстрактные задачи, типа "сделать хорошо", я придумываю как, потом это курится с архитекторами и аналитиками, потом после курения я это кодю. Кожу. Кодирую, в общем. На прошлой работе всё было по-другому. Пишешь одну строчку кода, потом её смотрят 10 человек и неделю всё это мусолится, правильно/неправильно. Потом ещё это всё переписывается так, как видят это тимлиды. И это тебе ставится в вину, что ты написал не так(хоть и безопаснее/эффективнее), как видят тимлиды. И только потом попадает в сборку. Т.о. никаких архитектурных решений даже по коду. Вообще лучше не думать в голову, а просто писать то, что в пункте написано. Теперь я работаю раз в пять меньше и делаю раз в двадцать больше, почти сам себе хозяин. Вот поэтому теперь я рад. И все вокруг тоже. Ну вот у Платова как-то почти ровно так и было сказано. Но я не хочу казаться умным. Мне вообще пофиг, как я кажусь. У меня проблема в том, что скорость генерации идей у меня сильно превосходит скорость их воплощения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:30 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbПоэтому, почитав про 11/14, я вижу усложнение языка, и задаю вопрос, что мы получили взамен за это усложнение. Нет никакого усложнения. Новые стандарты - 11, 14, 17 это не какие-то фантазии комитета стандартизации, а просто фиксация сложившейся практики. Т.е. сначала это было кем-то реализовано, признано успешным и полезным, и только потом внесено в язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:33 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВаше стремление оптимизировать код похвально.Не, без фанатизма. Такой вынос итераторов разумен только в коде, близком к real-time, какие-то обработки по несколько тысяч раз в секунду и прочее. На точечных событиях смысла не имеет. Anatoly MoskovskyВеселит только ваша уверенность что вы это сделаете лучше самого компилятора Ну, когда я с графикой работал, я смотрел код, сгенерённый компилятором, и если мог, заменял сишный кода на асмовые вставки, чтобы было быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:34 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyCEMbПоэтому, почитав про 11/14, я вижу усложнение языка, и задаю вопрос, что мы получили взамен за это усложнение. Нет никакого усложнения. Новые стандарты - 11, 14, 17 это не какие-то фантазии комитета стандартизации, а просто фиксация сложившейся практики. Т.е. сначала это было кем-то реализовано, признано успешным и полезным, и только потом внесено в язык. Да, это понятно. Это доведение языка до ума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 13:38 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbТакой вынос итераторов разумен только в коде, близком к real-time, какие-то обработки по несколько тысяч раз в секунду и прочее. На точечных событиях смысла не имеет. Вообще не имеет смысла. Т.к. компилятор в случае шаблонов видит весь код и выносит за пределы цикла константные конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 15:30 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Точно так же умиляют утверждения что ++iter быстрее чем iter++ ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 15:34 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbНу, когда я с графикой работал, я смотрел код, сгенерённый компилятором, и если мог, заменял сишный кода на асмовые вставки, чтобы было быстрее. А можешь пример привести что за С++ компиллятор был и что ты заменял на асм-вставки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 16:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТочно так же умиляют утверждения что ++iter быстрее чем iter++ )))компилятор теперь умеет и это оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 16:16 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorychAnatoly MoskovskyТочно так же умиляют утверждения что ++iter быстрее чем iter++ )))компилятор теперь умеет и это оптимизировать? С++ компиляторы давно умеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 16:21 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorych, Всегда умел )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 16:22 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyegorych, Всегда умел ))Скотт Майер возражал, помнится )) это же его совет писать в циклах ++iter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:15 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВообще не имеет смысла. Т.к. компилятор в случае шаблонов видит весь код и выносит за пределы цикла константные конструкции. Хмм. Не верю :) Внутри цикла могли быть вызовы функций, которые меняют содержимое контейнера. Неужели компилятор будет проверять все вероятные вызовы, вплоть до того, что могут быть указатели на функции и другие нетривиальные вещи, отследить которые на уровне компиляции нереально. maytonА можешь пример привести что за С++ компиллятор был и что ты заменял на асм-вставки? Начиналось всё с MS VC6.0. Ну, например, я memcpy/memset заменил себе на dwdcpy/dwdset dwdcpy Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. но это, наверно, не считается, но работало быстрее. Ну вот нашёл кусок кода заливки: Fill Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. а так же у меня все приращения указателей заменены на вставки, потому как это вроде делалось через сначала копирование в регистр, там приращение, потом копирование обратно. Всё замерял при правках, так как время было для меня критично. Были места, когда по логике должно было быстрее работать, а на деле тормозило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:45 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Я погуглил сорцы memcpy. Часть из них оперируют char. Часть - unsigned long int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:50 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Хм... на хабре вообще автор изучал вопрос и вернулся в лоно истинной церкви. Собственно в std::memcpy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:55 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbХмм. Не верю :) Внутри цикла могли быть вызовы функций, которые меняют содержимое контейнера. Неужели компилятор будет проверять все вероятные вызовы, вплоть до того, что могут быть указатели на функции и другие нетривиальные вещи, отследить которые на уровне компиляции нереально. Неужели программист, который вынес end() из цикла, это проверил сам, и потом после каждой правки проекта перепроверил Но ответ конечно, да, в элементарных случаях, в которых вы имеет смысл выносить end() компилятор сам это делает, а в сложных случаях человеку это доверять нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 18:36 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
>Приходится много писать кода для обхода этих контейнеров и совершения различных действий. Как правило, три первые строчки >очень похожи друг на друга: первый итератор, последний итератор(в случае неизменности контейнера, чтобы его каждый раз в цикле >не вычислять, да, я зануда) и, собственно, цикл. Дальше по контексту. В stl идеологически вернее определить функтор и применить его (или стандартный алгоритм stl) к контейнеру или его части. Тем более в сpp11 лямбды, auto и другой синтаксический сахар позволяет сделать это теперь очень кратко по объему кода, в сpp98 получалось, конечно, не очень красиво синтаксически и для одноразовой операции короче было пробежать циклом по контейнеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 18:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorychСкотт Майер возражал, помнится )) это же его совет писать в циклах ++iter[/quote] Во-первых этот совет был в книжке написанной в прошлом веке )) Во-вторых, дефакто компиляторы убирают копирование в операторе ++, если его результат игнорируется. А в С++17 они и деюре обязаны это делать. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 18:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
tehKoshВ stl идеологически вернее определить функтор и применить его (или стандартный алгоритм stl) к контейнеру или его части. Нет никакой единственно верной идеологии )) В С++ можно делать как хочешь. Он одинаково хорошо поддерживает и функциональный и императивный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:14 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, ну как-то лишка махнул с "хорошо" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 22:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
>В С++ можно делать как хочешь. Он одинаково хорошо поддерживает и функциональный и императивный подход. речь не о с++, а о stl в данном случае stl спроектирован на основе идей generic programming в первую очередь это конечно же относится к типам, упрощая - контейнер проектируется не под определенный тип, а под семейство типов, удовлетворяющих некоторым условия но, второе, о чем иногда забывают, и ваши алгоритмы тоже должны быть обобщены (так же как и стандартные алгоритмы входящие в состав stl) и поэтому должны быть способны применяться к некоторому семейству контейнеров, а не к конкретному контейнеру получается, когда вы просто перебираете элементы контейнера в цикле, вы нарушаете идеологию библиотеки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 23:24 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)ну как-то лишка махнул с "хорошо" Ну да, тут не хаскель. Но и предназначен C++ не для упоротых математикой. tehKoshречь не о с++, а о stl в данном случае STL это часть С++. Такой же инструмент, как и остальные части, такие как синтаксис, как совместимость с С и пр. Если вам нужен vector как динамический массив, то вы его просто используете. Нет никакой идеологии за массивом. Хотя если вам вдруг надо для вашей задачи рассматривать массив как контейнер то флаг вам в руки. Но это не идеология, а просто другая задача, которую С++ умеет успешно решать как и первую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 23:43 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВо-первых этот совет был в книжке написанной в прошлом веке )) Во-вторых, дефакто компиляторы убирают копирование в операторе ++, если его результат игнорируется. А в С++17 они и деюре обязаны это делать. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html понял, спасибо. Жаль, что до С++17 мне пока как до луны )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 00:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
я понял что мне не хватает мозгов хорошей документации по stl. Всё к этому (к stl) в итоге и должно было свестись. Сам язык в чистом виде не должен поддерживать высокоуровневые абстракции, а вот stl - как раз отличный кандидат для этого, причём с самого начала своего создания. Я сейчас немного шарился по интернету, смотрел примеры по лямбдам и увидел много использования кода из stl, про который я ничего не знаю, и который сокращает количество написанного кода. Есть мнение, что изучив stl более подробно, я ещё раз решу все свои проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 08:39 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Производительность (в написании кода), на мой взгляд, больше зависит от используемых библиотек в случае C++ и той парадигмы программирования, в которой пишется код. Считаю, что в C++ не хватает аннотаций, как в java. На STL определенно стоит вам посмотреть глубже. Лямбды дают удобство разработки и компактность кода. Например, в случае задания критериев сортировки, лямбды очень удобны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:08 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
А еще добавились std::thread, std::mutex, std::lock_guard и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:19 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonЭтот который Платов? https://habrahabr.ru/post/259831/ вчера прочитал с трудом все три опуса по ссылке. Это их надо было читать, или это просто ссылка на автора? ну это не программист, это гопник какой-то... че его слушать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:19 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
. Считаю, что в C++ не хватает аннотаций, как в java. нафига нам аннотации? во-первых, это такой способ менять язык, не меняя язык, на фиг это вообще нужно? во-вторых, есть прагмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:22 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofСчитаю, что в C++ не хватает аннотаций, как в java. Вы изучите полный цикл создания ПО и рантайм с аннотациями. И поймете что C++ половина этих юзкейсов не поддерживает. Т.к. нет концепции компонента или бина и нет ClassLoader. А чтобы маркировать методы и аргумента чем-нибудь - достаточно комментариев. Автодокументирование так и работает ЕМНИП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:54 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
По удобствам. Вот же : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Уже ж удобнее, нет разве ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:00 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
alex_kА еще добавились std::thread, std::mutex, std::lock_guard и т.д.вот! А где хорошие документации на эту тему? Нашёл на вид неплохую документацию MasterZivвчера прочитал с трудом все три опуса по ссылке. Это их надо было читать, или это просто ссылка на автора? просто ссылка на автора и на его мысль, с которой всё началось: скорость разработки ну это не программист, это гопник какой-то... че его слушать...хмм, но мысль про требование от ЯП скорости (и удобства и простоты) разработки, я считаю, разумная. Всё становится очевидно, когда разрабатываешь продукт сам, тогда время становится одним из ключевых факторов, оно почти всегда против тебя(только после релиза оно на твоей стороне). И чем быстрее ты сделаешь продукт, тем лучше. MasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
typedef? using! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 13:56 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbMasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития. Вы не поняли. Тот пример про то, что значения полей можно задать прямо при объявлении, а не где-то в конструкторах, как было раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 14:01 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Прагмы зависят от компилятора, нет возможности расширять их функциональность. Иногда, с моей точки зрения, бывает полезно аннотировать методы. Как пример, полагаю, вы знаете, зачем используется moc компилятор в Qt? Конечно, введя только аннотации, эту проблему не решить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:06 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
mayton, Понимаю, как я уже сказал раннее, введя только аннотации, проблему не решить. Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:10 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofmayton, Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение. Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++ который был-бы полезен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:38 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonМожете привести пример из практики метаданных в С++ который был-бы полезен?@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:45 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorych@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них ) Эти две уже давно есть )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:46 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbхмм, но мысль про требование от ЯП скорости (и удобства и простоты) разработки, я считаю, разумная. Там мысль "за всё хорошее, против всего плохого". Ещё мысль "динамика -- говно". Т.е. там тупо нет разумных мыслей. Ну и ещё одна мысль "найти лучший в мире язык программирования" тоже дурацкая. Ну не бывает универсальных языков программирования. Надо знать много и применять по необходимости разные в разных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMb MasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития. Вообще -то я имел в виду тупо одну фичу -- инициализация мемберов через инициализаторы в теле класса, а не в каждом из конструкторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:53 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonvitprofmayton, Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение. Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++ который был-бы полезен? Пример я уже приводил - moc компилятор Qt или ORM на C++. Проблема заключается в том, что сами по себе аннотации мало что дадут. Необходимо реализовать допмеханизмы для работы с классом. Например, найти указатель на метод класса по аннотации и вызвать его. К сожалению, это вряд ли будет реализовано в C++. Можно было бы реализовать дополнительный шаг процесса компиляции после препроцессинга - обработка аннотаций. На этой стадии можно, например, сгенерировать дополнительный C++ код, как это делает mос компилятор Qt, который также генерирует C++ код с метаданными для класса. Ну, можно еще подумать и привести другие примеры. Например, интеграция с IDE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:54 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofmayton, Понимаю, как я уже сказал раннее, введя только аннотации, проблему не решить. Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение. Ещё раз, аннотации -- это костыли. В нормальных языках аннотаций НЕТ. Зачем ты хочешь их тащить в нормальный язык С++ -- не понятно от слова "совсем". Надо добавлять фичи -- надо расширять язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:56 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorychmaytonМожете привести пример из практики метаданных в С++ который был-бы полезен?@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них ) override уже есть, не в виде аннотации. deprecated -- напиши в документации, в комментарии, или напиши и ещё удали тело (реализацию). Линкер тебе всё скажет, а потом пользователь прочитает в документации, что это -- deprecated. Кстати, deleted можно теперь писать не только к конструкторам ? Интересно, надо глянуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 15:59 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofmaytonпропущено... Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++ который был-бы полезен? Пример я уже приводил - moc компилятор Qt или ORM на C++. Проблема заключается в том, что сами по себе аннотации мало что дадут. Необходимо реализовать допмеханизмы для работы с классом. Например, найти указатель на метод класса по аннотации и вызвать его. К сожалению, это вряд ли будет реализовано в C++. Можно было бы реализовать дополнительный шаг процесса компиляции после препроцессинга - обработка аннотаций. На этой стадии можно, например, сгенерировать дополнительный C++ код, как это делает mос компилятор Qt, который также генерирует C++ код с метаданными для класса. Ну, можно еще подумать и привести другие примеры. Например, интеграция с IDE. Да выдумки всё. Не нужны аннотации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 16:02 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZivВ нормальных языках аннотаций НЕТ. Не буду спорить, но хотелось бы уточнить, что аннотации есть в java, c#. Которые с моей точки зрения нормальные языки. Мало того, в целях кодогенерации аннотации моли бы пригодиться. MasterZivЗачем ты хочешь их тащить в нормальный язык С++ -- не понятно от слова "совсем". 1) Улучшить читаемость кода, 2) Держать все описания в одном месте 3) иметь возможность расширить язык, когда это нужно 4) кодогенерация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 16:08 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Вот уже ввели generalized attributes. Наверно, это первый шаг к полноценной реализации аннотаций. Похоже, потребность есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 16:18 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Рассматривать аннотации в языке как вещь в себе - безсмысленно. Т.к. аннотация с точки зрения Java (к примеру) это триггер который приводит к каким-либо actions на фазах compile, class loading, runtime. Причем большая (львиная доля) этих триггеров имеют смысл только будучи инстанциированы во фреймворках для таких техник как ORM, web binding, xml-,json- bingings, transactions control, security, logging, unit testing, contracts, mocks, e.t.c. Поэтому С++ аннотации не нужны. Но если найти фреймворк и наполнить class более сложным смыслом (сущность БД к примеру) то тот-же Qt-код (возможно) мог бы улучшить свою читабельность если ему дать возможность декларировать сущности с особым синтаксисом. Я к сожалению не спец в Qt и поэтому пример с Qt-moc я не понял. Что там ЕСТЬ аннотация в общем понимании этого слова. Где там есть триггеринг этой аннотации. И как я могу это использовать (расширять видоизменять e.t.c.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 16:24 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonРассматривать аннотации в языке как вещь в себе - безсмысленно. Т.к. аннотация с точки зрения Java (к примеру) это триггер который приводит к каким-либо actions на фазах compile, class loading, runtime. Причем большая (львиная доля) этих триггеров имеют смысл только будучи инстанциированы во фреймворках для таких техник как ORM, web binding, xml-,json- bingings, transactions control, security, logging, unit testing, contracts, mocks, e.t.c. Поэтому С++ аннотации не нужны. Но если найти фреймворк и наполнить class более сложным смыслом (сущность БД к примеру) то тот-же Qt-код (возможно) мог бы улучшить свою читабельность если ему дать возможность декларировать сущности с особым синтаксисом. Честно говоря, не очень понял вашу аргументацию. Собственно говоря, хорошо бы иметь возможность реализовать все указанные вами техники на C++ удобным способом. maytonЯ к сожалению не спец в Qt и поэтому пример с Qt-moc я не понял. Что там ЕСТЬ аннотация в общем понимании этого слова. Где там есть триггеринг этой аннотации. И как я могу это использовать (расширять видоизменять e.t.c.). Вот пример кода Qt: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Q_OBJECT, slots, signals - директивы препроцессора, которые заменяются на пустую строку (по-моему так), но они служат инструкцией для MOC compiler, который генерирует новый C++ код с метаданными класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 16:42 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofMasterZivВ нормальных языках аннотаций НЕТ. Не буду спорить, но хотелось бы уточнить, что аннотации есть в java, c#. Которые с моей точки зрения нормальные языки. Ну не смеши нас... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 17:28 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВы не поняли. Тот пример про то, что значения полей можно задать прямо при объявлении, а не где-то в конструкторах, как было раньше. MasterZivВообще -то я имел в виду тупо одну фичу -- инициализация мемберов через инициализаторы в теле класса, а не в каждом из конструкторов.А, так это "давнишняя" фича. Это всё хорошо. Но, согласитесь, описания классов в коде занимают на порядок меньше места, чем методы, а стало быть и код обработки данных. В этом смысле лямбды и всякие stl-ные конструкции, позволяющие не писать много этого самого кода, гораздо полезнее. Ну и, возможно отдельной темой, стоило бы обсудить IDE. Раз уж вспомнили яву, у меня сейчас запущена idea 16 о огромадным проектом и 2013 студия с тем, что я начал делать 28 июня. "пропасть между ними огромна". Даже не затрагивая вещи "удобно-неудобно", можно сказать, во-первых, что студия тормозит. Местами она просто не успевает за мной. Идея, написанная на яве, не тормозит. Ну и удобных фич, "из коробки" у идеи в разы больше. У меня стойкое чувство, что эти две IDE разрабатываются принципиально разными командами. У идеи сами разработчики из своего опыта добавляют недостающие вещи, расстояние от идеи(мысли) до реализации минимальное. В то время как в студии чувствуется длинный путь в багтреккерах, собраниях аналитиков и так далее. Ну это вот у меня сложилось такое чувство. Ладно, это всё печаль и лирика, хотя тоже сильно касается скорости и удобства разработки. PS: 2015 студию не смотрел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 06:40 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
. Раз уж вспомнили яву, у меня сейчас запущена idea 16 о огромадным проектом и 2013 студия с тем, что я начал делать 28 июня. "пропасть между ними огромна". Даже не затрагивая вещи "удобно-неудобно", можно сказать, во-первых, что студия тормозит. да ладно, не разигрывай ... clion так тормозит, что ой ой ой... PS: 2015 студию не смотрел а надо было бы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 08:16 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZivда ладно, не разигрывай ... clion так тормозит, что ой ой ой...Clion не смотрел, говорю только за Idea. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 08:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprof Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А добавление Q_OBJECT влияет на RTTI ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 11:02 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonА добавление Q_OBJECT влияет на RTTI? Q_OBJECT это определенный в библиотеке макрос препроцессора, который обрабатывается на стадии компиляции. Ниже код, в который разворачивается этот макрос. Как видите, добавляется статический член класса + декларация нескольких виртуальных функций, реализация которых генерируется MOC compiler. Класс с Q_OBJECT и класс без Q_OBJECT два разных класса по сути. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 11:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZivстудия тормозит Я как перешел на QtCreator перестал даже смотреть на остальные IDE. Летает на любых проектах. Были проблемы с подтормаживанием в некоторых случаях, но это был баг, которых возник и потом был исправлен, а не концептуальное торможение как в Студии )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 13:05 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
vitprofmaytonА добавление Q_OBJECT влияет на RTTI? Q_OBJECT это определенный в библиотеке макрос препроцессора, который обрабатывается на стадии компиляции. Ниже код, в который разворачивается этот макрос. Как видите, добавляется статический член класса + декларация нескольких виртуальных функций, реализация которых генерируется MOC compiler. Класс с Q_OBJECT и класс без Q_OBJECT два разных класса по сути. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Меня интересует. Если есть некий интерфейс типа удалённого вызова. На который приходит не всегда специфицированный объект (сеть фигли). Есть ли у меня возможноть удостовериться что твои мета-теги или аннотации или еще бох весть какие сущности присутствуют в наличии. Тоесть что-то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 13:33 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonМеня интересует. Если есть некий интерфейс типа удалённого вызова. На который приходит не всегда специфицированный объект (сеть фигли). Есть ли у меня возможноть удостовериться что твои мета-теги или аннотации или еще бох весть какие сущности присутствуют в наличии. Тоесть что-то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Как вы привели в примере, нет, конечно. Q_OBJECT это макрос, строка, которую препроцессор заменит на C++ код, это костыль из-за того, что отсутствуют аннотации. Все объекты в Qt, которые "шлют" сигналы и имеют "слоты", наследуются от QObject. Мы можете использовать стандартную C++ RTTI (dynamic_cast, typeof etc), а также навороты Qt типа qt_cast. Можно сделать так: Код: plaintext 1. 2. 3. 4. 5. Мой посыл - если бы были аннотации, то можно было бы сделать такую проверку присутствия аннотаций, а также сгенерировать дополнительный C++ код (обработка аннотаций на стадии компиляции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 14:09 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyТочно так же умиляют утверждения что ++iter быстрее чем iter++ ))) это вполне актуальный вопрос на собеседованиях. действительно, лет так 10-15 назад многие компиляторы для i++ генерировали менее оптимальный код, чем для ++i, и осведомленность об этом говорит о наличии опыта, в годах (не в объеме знаний). а вот ты об этом не в курсе, что явно выдает в тебе неофита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:51 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaэто вполне актуальный вопрос на собеседованиях. действительно, лет так 10-15 назад многие компиляторы для i++ генерировали менее оптимальный код, чем для ++i, и осведомленность об этом говорит о наличии опыта, в годах (не в объеме знаний). а вот ты об этом не в курсе, что явно выдает в тебе неофита. Нет, обо мне такой ответ ничего такого не говорит, т.к. я могу его тут же обосновать, прямо в лицо спрашивающему. А вот если на собеседовании мне будут доказывать что постфикс ++ влияет на скорость, то это признак того что в этой конторе вместо работы компостируют мозги, и туда не надо идти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 17:44 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskynojavaэто вполне актуальный вопрос на собеседованиях. действительно, лет так 10-15 назад многие компиляторы для i++ генерировали менее оптимальный код, чем для ++i, и осведомленность об этом говорит о наличии опыта, в годах (не в объеме знаний). а вот ты об этом не в курсе, что явно выдает в тебе неофита. Нет, обо мне такой ответ ничего такого не говорит, т.к. я могу его тут же обосновать, прямо в лицо спрашивающему. А вот если на собеседовании мне будут доказывать что постфикс ++ влияет на скорость, то это признак того что в этой конторе вместо работы компостируют мозги, и туда не надо идти. господи, ты даже не осилил то, что я тебе сказал выше. а так да, таких как ты максималистов - нормальные конторы отправляют ... в другие конторы, тут ты прав ;) буйные максималисты обычно никому не нужны - потом код вычищать за такими себе дороже, тем более ты слушать вообще, как я посмотрю, не научен - тебе важнее высказать что-то там свое, изначально недопонятое или выдуманное вне контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 17:54 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaтем более ты слушать вообще, как я посмотрю, не научен Чтобы тебя слушали, надо чем-то вызвать интерес )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 17:55 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskynojavaтем более ты слушать вообще, как я посмотрю, не научен Чтобы тебя слушали, надо чем-то вызвать интерес )) ты всерьез думаешь что кому-то интересно вызывать интерес у тех, у кого мозг стандартно зашаблонирован и зацементирован? ты еще предложи каких староверов саентологией заинтересовать, да да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 18:02 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbКакие бонусы мы получили с С11(14)К моему глубокому имхо-вому сожалению, никаких. Язык фактически стал другим. С++98 - true C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 18:55 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
UsmanCEMbКакие бонусы мы получили с С11(14)К моему глубокому имхо-вому сожалению, никаких. Язык фактически стал другим. С++98 - true C++ С11 != С++11, а С14 вообще не существует, господи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 19:01 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaUsmanпропущено... К моему глубокому имхо-вому сожалению, никаких. Язык фактически стал другим. С++98 - true C++ С11 != С++11, а С14 вообще не существует В названии темы речь идет о Си++... поэтому и подумал, что имеется в виду Си++11. Ок, корректирую, но если касательно Си, тада Си89 - true Си . nojavaгосподи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 19:06 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Usman тада Си89 - true Си . практически все актуальные компиляторы уже C99 и partial C11 compatible (даже "родные" в AIX, Solaris, HP/UX), потому такой жескач, как strict C89 - уже не актуален. даже в MSVC уже не все так печально, ибо привинтили clang как frontend ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 19:16 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MSVC6 (98 г.в.) очень даже актуален. Откомпилил тут недавно свою длл-ку под VC2015 и огреб, т.к. работает она на PentiumIII+, а вторые пни и прочие древние атлоны ее не работают, а они оказывается еще есть, хоть и немного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 20:07 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima Tа вторые пни и прочие древние атлоны ее не работают, а они оказывается еще есть, хоть и не много. 1) Поверить dll с помощью Dependency Walker 2) Как насчет установленных Redistributable Packages для Visual C++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 20:56 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Dima Tа вторые пни и прочие древние атлоны ее не работают, а они оказывается еще есть, хоть и не много. 1) Поверить dll с помощью Dependency Walker 2) Как насчет установленных Redistributable Packages для Visual C++? А при чем тут это, если в коде команды АСМа которые старые процы просто не понимают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 21:06 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima TА при чем тут это, если в коде команды АСМа которые старые процы просто не понимают?Установка Platform Toolset на v120_xp ни чего не дает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 21:27 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima TА при чем тут это, если в коде команды АСМа которые старые процы просто не понимают? не асма, а процессора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 21:50 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima TА при чем тут это, если в коде команды АСМа которые старые процы просто не понимают? На всякий случай. https://msdn.microsoft.com/en-us/library/ms165407.aspx Understanding Build Platforms https://habrahabr.ru/post/251795/ Visual Studio Extensibility. Часть первая: MSBuild https://habrahabr.ru/company/neobit/blog/151712/ Использование оболочки Visual Studio 2010 для компиляции проектов с помощью gcc в Linux ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 22:05 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima TОткомпилил тут недавно свою длл-ку под VC2015 и огреб, т.к. работает она на PentiumIII+, а вторые пни и прочие древние атлоны ее не работают, а они оказывается еще есть, хоть и немного. /G (Optimize for Processor) Options значения макроса _M_IX86 : Option in Development EnvironmentCommand-Line OptionResulting ValueBlend/GB_M_IX86 = 600 (Default. Future compilers will emit a different value to reflect the dominant processor.)Pentium/G5_M_IX86 = 500Pentium Pro Pentium II and Pentium III/G6_M_IX86 = 60080386/G3_M_IX86 = 30080486/G4_M_IX86 = 400 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 22:22 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Тут поднобности 18816450 опцию /G там не пробовали, сейчас затестил /G5 ничего не меняет. https://msdn.microsoft.com/en-us/library/h66s5s0e(v=vs.71).aspx These options tell the compiler to optimize code generation for the specified processor. Как понимаю это просто оптимизация под конкретный проц, а не запрет на использование асм-команд имеющихся только в более поздних процессорах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2016, 13:04 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaты всерьез думаешь что кому-то интересно вызывать интерес у тех, у кого мозг стандартно зашаблонирован и зацементирован?ты как-то сам себе противоречишь: с одной стороны, сам говоришь про вещи, которые происходили с конечным кодом 10-15 лет назад, которые уже давно соптимизированы, но надо их помнить и быть в курсе, с другой стороны обвиняешь в инертности мозга. UsmanК моему глубокому имхо-вому сожалению, никаких.я ещё не доразобрался в вопросе, есть надежда ещё на stl(и boost). Вердикт мой такой: язык стал лучше. Потому что стал гибче и продуманней, и при этом в него не внесли никакой прикладной начинки - всё это для stl и прочих. Язык остался чистым, и это хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 06:36 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbnojavaты всерьез думаешь что кому-то интересно вызывать интерес у тех, у кого мозг стандартно зашаблонирован и зацементирован?ты как-то сам себе противоречишь: с одной стороны, сам говоришь про вещи, которые происходили с конечным кодом 10-15 лет назад, которые уже давно соптимизированы, но надо их помнить и быть в курсе, с другой стороны обвиняешь в инертности мозга. какой еще инертности мозга? я лишь привел пример "городской легенды", которая имеет место быть на собеседованиях и довольно часто в реальном коде. ты или знаешь про это, и можешь объяснить, почему вот тогда было так, а сейчас неважно, или нет. подобных городских легенд из "лучших практик" можно надергать довольно много. к примеру поймать неофита на предпочтении формы if (expr == variable) перед if (variable == expr) и тут-же посадить его в лужу, если он выберет первый или второй вариант, потому что правильный ответ в случае приваивания внутри if это форма if ((variable = expr)) - на иное будет ругаться статический анализатор подобные неактуальные "лучшие практики" кодирования нужно знать - и причины появления, и современное состояние - как нужно на самом деле делать. ну или задать коронный вопрос зачем нужна конструкция while (1) { do_something; }; или do {} while (1); вот реально, зачем так писать, зачем там while (1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 12:21 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava вот реально, зачем так писать, зачем там while (1)? имелось в виду do { do_something(); } while (0); - причины появления такой идиоматичной формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 12:24 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, что означает слово 'неофит' в вашем понимании? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 12:30 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurynojava, что означает слово 'неофит' в вашем понимании? 20..30 летний новичок, который начитался всякой новомодной ерунды поверхам, причем большей частью на каком stackoverflow, но мнит себя экспертом чуть ли не мирового класса. в частности типовой признак детектор - использование словечек паразитов вроде Factory или Adapter в названии классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 12:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaSashaMercurynojava, что означает слово 'неофит' в вашем понимании? 20..30 летний новичок, который начитался всякой новомодной ерунды поверхам, причем большей частью на каком stackoverflow, но мнит себя экспертом чуть ли не мирового класса. в частности типовой признак детектор - использование словечек паразитов вроде Factory или Adapter в названии классов. А если человек использует венгерскую нотацию, то он будет 'неофитом'? Всё-таки хотелось бы более детальное описание. Это слабый программист? Или это сноб? Или кто? Опишите пожалуйста более детально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 12:50 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaк примеру поймать неофита на предпочтении формы if (expr == variable) перед if (variable == expr)я всегда использую Йодовскую нотацию, потому что читать экспрешены слева нагляднее, чем внутри кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2016, 13:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurynojavaпропущено... 20..30 летний новичок, который начитался всякой новомодной ерунды поверхам, причем большей частью на каком stackoverflow, но мнит себя экспертом чуть ли не мирового класса. в частности типовой признак детектор - использование словечек паразитов вроде Factory или Adapter в названии классов. А если человек использует венгерскую нотацию, то он будет 'неофитом'? Всё-таки хотелось бы более детальное описание. Это слабый программист? Или это сноб? Или кто? Опишите пожалуйста более детально за венгерскую нотацию нужно пальцы в дверь зажимать. как и за йодовскую. да и за любую, кроме общепринятых - программист в 99% случаев не пишет код, а читает, и если чтение затруднено для десятков или даже тысяч людей одним автором - то автор этот должен быть подвергнут обструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 13:39 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaSashaMercuryпропущено... А если человек использует венгерскую нотацию, то он будет 'неофитом'? Всё-таки хотелось бы более детальное описание. Это слабый программист? Или это сноб? Или кто? Опишите пожалуйста более детально за венгерскую нотацию нужно пальцы в дверь зажимать. как и за йодовскую. да и за любую, кроме общепринятых - программист в 99% случаев не пишет код, а читает, и если чтение затруднено для десятков или даже тысяч людей одним автором - то автор этот должен быть подвергнут обструкции. а венгерская нотация не общепринята?))) Какая же нотация по вашему общепринята?) И что вообще по вашему значит слово 'общепринята'? Складывается впечатление, что здесь вы подразумеваете ваше личное мнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 14:00 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurynojavaпропущено... за венгерскую нотацию нужно пальцы в дверь зажимать. как и за йодовскую. да и за любую, кроме общепринятых - программист в 99% случаев не пишет код, а читает, и если чтение затруднено для десятков или даже тысяч людей одним автором - то автор этот должен быть подвергнут обструкции. а венгерская нотация не общепринята?))) Какая же нотация по вашему общепринята?) И что вообще по вашему значит слово 'общепринята'? Складывается впечатление, что здесь вы подразумеваете ваше личное мнение при чем тут мое личное мнение? общепринятое - открываешь исходники действительно значимых и удачных OSS проектов, и вчитываешься - там тебе вполне нагрядно покажут, как принято грамотно и правильно писать, чтоб твой код могли прочитать и понять другие люди. в мире C - отправная точка это linux kernel, glibc, free bsd kernel, apr. в мире C++ ..... webkit хотя вещи вроде Код: plaintext 1. или еще лучше Код: plaintext 1. 2. 3. 4. https://raw.githubusercontent.com/ewebkit/webkit/ewebkit-1.11/Source/WebCore/cssjit/SelectorCompiler.cpp отберите у них FullHD мониторы! это уже ни разу не смешно previousDirectAdjacentFragmentInDirectAdjacentChain сколько раз встречается слово Direct и Adjacent? что за шизофазия у вас в головах, люди? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 14:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaда и за любую, кроме общепринятых - программист в 99% случаев не пишет код, а читает, и если чтение затруднено для десятков или даже тысяч людей одним автором - то автор этот должен быть подвергнут обструкции.я открываю наш проект, который длится двадцать лет, там венгерская нотация (да я ей вообще с детства пользуюсь, другой не было) - общепринятая же? Проект очень удачный. Да и вообще, для меня нет проблем, в какой нотации работать, я сейчас в 2-3 разных нотациях/схемах работаю в течении дня. nojavaсколько раз встречается слово Direct и Adjacent? что за шизофазия у вас в головах, люди? Вооооот, дело не только и не столько в нотации, а ещё и в принятых в проекте правилах написания кода, которые, обычно включают в себя какую-нибудь нотацию, но необязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 14:45 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaSashaMercuryпропущено... а венгерская нотация не общепринята?))) Какая же нотация по вашему общепринята?) И что вообще по вашему значит слово 'общепринята'? Складывается впечатление, что здесь вы подразумеваете ваше личное мнение при чем тут мое личное мнение? общепринятое - открываешь исходники действительно значимых и удачных OSS проектов, и вчитываешься - там тебе вполне нагрядно покажут, как принято грамотно и правильно писать, чтоб твой код могли прочитать и понять другие люди. Есть какой-то проект 1, пусть этим проектом будет хоть ядро Linux, или что угодно, в этом проекте наверняка будет своя система обозначений, в проекте 2 - пусть это Apache сервер будет другая система обозначения и т.д. Но я не слышал о такой системе как нотация эпэчи, или нотация линэкс. А вот о венгерской нотации слышал каждый школьник, и пусть её критикует кто угодно, но она несомненно одна из общепринятых. Не сомневаюсь, что 95 процентов программистов используют ее хотя бы раз в год, хотя бы в одном месте в своем коде, 100 процентов встречают ее при анализе чужого кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 15:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, у вас слишком радикальные взгляды, и видимо не только по вашему делению людей на так называемых 'неофитов' и остальную группу(надеюсь, что ваши оскорбления данным термином по отношению к членам Сообщества впредь прекратятся), но и по вопросам общей теории информатики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 15:35 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, да ладно бы радикальные. Они неверные. В чем-то, о чем вы говорите, есть истина, при этом как правило она на поверхности, но что-то из ваших суждений откровенно противоречит принятому положению вещей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 15:39 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurynojava, да ладно бы радикальные. Они неверные. В чем-то, о чем вы говорите, есть истина, при этом как правило она на поверхности, но что-то из ваших суждений откровенно противоречит принятому положению вещей некий Дмитрий Пучков утверждает, что 95% популяции - ведут себя как идиоты. причем вне зависимости от социальных слоев: для группы людей со званием профессор правило 95% тоже применимо. каждый выбирает себе тот путь, который ему комфортнее - так удобнее, не нужно тратить такты на критическую оценку текущего состояния и пути развития того или иного направления. просто будь как все (ой, ну и что, что 95%, все же там), не прогадаешь. и? будем и дальше равняться на "принятое положение вещей"? безусловно! :):) топик вообще-то не про то, как "помогите подключить библиотеку", а про критику принятых подходов. ты разве не заметил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 16:24 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurynojava, да ладно бы радикальные. Они неверные. что именно неверное я говорил? даже интересно стало. конкретно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 16:25 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
CEMbnojavaда и за любую, кроме общепринятых - программист в 99% случаев не пишет код, а читает, и если чтение затруднено для десятков или даже тысяч людей одним автором - то автор этот должен быть подвергнут обструкции.я открываю наш проект, который длится двадцать лет, там венгерская нотация (да я ей вообще с детства пользуюсь, другой не было) - общепринятая же? Проект очень удачный. А название проекта можно? SashaMercuryНо я не слышал о такой системе как нотация эпэчи, или нотация линэкс. А вот о венгерской нотации слышал каждый школьник, и пусть её критикует кто угодно Ну не слышал, вот послушай. https://www.kernel.org/doc/Documentation/CodingStyle Можешь сразу начать читать с фразы: авторEncoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. перевод нужен? И подобных нотаций довольно много - на 80-90% они пересекаются. Ни в одном нормальном OSS проекте не сказано использовать венгерскую нотацию. Или можешь привести обратный пример? Вот и гугл четко говорит, что любителям венгерской нотации делать и куда идти: https://google.github.io/styleguide/cppguide.html автор• Do not use Hungarian notation (for example, naming an integer iNum). Use the Google naming conventions, including the .cc extension for source files. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 16:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, Оно конечно да, многие люди ненавидят венгерскую нотацию. Но вот так-же факт что все эти люди не понимают смысла венгерской нотации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 17:32 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Венгерская нотация удобна не везде. Например в фоксе ее использую, т.к. переменные нетипизированы и ошибки с типами сразу бросаются в глаза. Например такое вылезет только в рантайм Код: plaintext 1. Это самый нездоровый косяк: ошибка в сообщении об ошибке. И венгерская нотация позволяет это легко увидеть. По инерции пользовал ее в С/С++, подобных проблем нет, т.к. компилятор не даст скомпилировать такой код. С другой стороны в фоксе гораздо меньше типов, пары символов префикса хватает, в отличие от С Код: plaintext 1. 2. 3. 4. Так и писал по инерции после фокса, пока тут кто-то не сказал что ерундой занимаюсь, поразмыслил, пришел к выводу что оно реально не надо столько лишних букав в С/С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 18:22 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
White Owlnojava, Оно конечно да, многие люди ненавидят венгерскую нотацию. Но вот так-же факт что все эти люди не понимают смысла венгерской нотации. В ней нет никакого смысла. Если тебе нужно узнать тип переменной - то достаточно в VS подвести мышку, и вуаля - тебе хинтом покажут декларацию. В Netbeans аналогично, остальное лень проверять. Несоотвествие типов (к примеру передача int-а в unsigned int или наоборот) - расскажет любой современный компилятор с включенным -Wall. Ну или pc-lint, coverity и прочие подобные - дорасскажет нерассказанное. Итого венгерская нотация - этот такой-же бессмысленный пережиток недоразвитого инструментария прошлых лет, как и принятое, к примеру, в SQL, T-SQL, PL/SQL правило писать keywords капсом - просто в те годы не было подстветки ключевых слов в редакторе, и так якобы получалось читабельнее. Ну... ок, монохромные мониторы окончательно исчезли в 90-х, причина - почему писать кейворды капсом, забыта даже старперами, но все продолжают их капсить, зачем-то. Так и тут. Все уже и забыли, зачем это было придумано, печатают ерунду по привычке, не включая мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 18:31 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaWhite Owlnojava, Оно конечно да, многие люди ненавидят венгерскую нотацию. Но вот так-же факт что все эти люди не понимают смысла венгерской нотации. В ней нет никакого смысла. Если тебе нужно узнать тип переменной - то достаточно в VS подвести мышку, и вуаля - тебе хинтом покажут декларацию. В Netbeans аналогично, остальное лень проверять.А с чего ты решил что венгерская нотация служит для обозначения типов? Она служит для обозначения того о чем договорятся в конкретном проекте. И если в не типизированных языках ее действительно удобно использовать для типов, то в типизированных она используется для других вещей. В Си и С++ мирах она чаще всего используется как замена для namespace. Смотри на почти любую библиотеку: GLIB, GTK+, Qt, wxWidgets, почти все lib* проекты и почти все интерфейсный библиотеки. В MFC она действительно использовалась некоторое время для обозначения типов, отсюда скорее всего и пошла эта глупая ненависть. nojavaТак и тут. Все уже и забыли, зачем это было придумано, печатают ерунду по привычке, не включая мозг.Угу. А некоторые ругают то чего не понимают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 18:54 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
White OwlА с чего ты решил что венгерская нотация служит для обозначения типов? Она служит для обозначения того о чем договорятся в конкретном проектеИменно в таком ракурсе и использую ее /причем в коде для разных языков использую разный набор префиксов/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:05 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Sorry. Идейка появилась. Хорошо если бы разработчики C++ придумали механизм создания программистом префиксов. Суть в том чтобы эти префиксы давали знать синтаксическому анализатору на какой тип данных указывает префикс и освобождали программиста от явного декларирования переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Читал недавно документацию по WebGL и незаметно пришлось почитать и по OpenGL Вот примерно так описывают шаблон функции. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
White Owlnojavaпропущено... В ней нет никакого смысла. Если тебе нужно узнать тип переменной - то достаточно в VS подвести мышку, и вуаля - тебе хинтом покажут декларацию. В Netbeans аналогично, остальное лень проверять.А с чего ты решил что венгерская нотация служит для обозначения типов? Потому что оба случая ее применения говорят о кодировании типов. https://ru.wikipedia.org/wiki/Венгерская_нотация Вот тот префикс назначения - nSize, это все равно про разновидность типа. White OwlОна служит для обозначения того о чем договорятся в конкретном проекте. И если в не типизированных языках ее действительно удобно использовать для типов, то в типизированных она используется для других вещей. В Си и С++ мирах она чаще всего используется как замена для namespace. Смотри на почти любую библиотеку: GLIB, GTK+, Qt, wxWidgets, почти все lib* проекты и почти все интерфейсный библиотеки. В имени glDepthFunc https://www.opengl.org/wiki/GLAPI/glDepthFunc префикс gl используется просто для обозначения namespace, т.е. является реализацией Name Mangling, потому что в C нет namespace как таковых, и это единственный путь там обеспечения глобальной уникальности имен. Но это ни разу не венгерская нотация, т.к. эта функция вообще не возвращает ничего (ибо void), и префикс в ее имени с т.з. типа или назначения переменных не имеет смысла (читаем определение венгерской нотации еще раз). Я бы не стал путать модульность, пространство имен и венгерскую нотацию. Венгерская нотация это лишь про типы данных и назначения типов, но не про модульность и namespace. White OwlВ MFC она действительно использовалась некоторое время для обозначения типов, отсюда скорее всего и пошла эта глупая ненависть. Еще раз - использование одного предопределенного префикса в имени классов и глобальных функций - это лишь реализация namespace. Это не имеет отношения к венгерской нотации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:35 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Хорошо если бы разработчики C++ придумали механизм такой, чтобы программа сама писалась ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:40 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Sorry. Идейка появилась. Хорошо если бы разработчики C++ придумали механизм создания программистом префиксов. Суть в том чтобы эти префиксы давали знать синтаксическому анализатору на какой тип данных указывает префикс и освобождали программиста от явного декларирования переменных. дурь несусветная. как и вся венгерская нотация. как и все эти перловые, PHP-ные и бейсиковские префиксы типа. тип переменной задекларировать нужно лишь однажды. но зачем с собой возить декларацию типа переменной 10 местах использования этой переменной - это вопрос. ты уже ведь раз задекларировал, зачем это пытаться делать еще 10 раз подряд? компилятор вполне догадается и с первого раза. а вот что стоило бы сделать - так это убрать слабую типизацию - и запретить присваивать int в size_t, без явного приведения. вот это было бы весьма полезно. пока это лечится только статическими анализаторами, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:42 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, Вот ты привел ссылку на Википедию... Ну почему ж ты сам эту статью не прочитаешь? https://ru.wikipedia.org/wiki/Венгерская_нотация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 19:47 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaдурь несусветная. как и вся венгерская нотация. как и все эти перловые, PHP-ные и бейсиковские префиксы типа. тип переменной задекларировать нужно лишь однажды. но зачем с собой возить декларацию типа переменной 10 местах использования этой переменной - это вопрос. Затем, что через пол годика, когда понадобиться заглянуть в текст программы /не говоря уже об сторонних разработчиках/ можно будет в обычном notepad понять, что за тип переменной ... Далее развивать суждение не буду /вариации на тему/. PS: Ваше утверждение почти равносильно следующему диалогу. - Мне квас нравится. - Что за дурь несусветная нужно пить ПИВО! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:05 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
White Owlnojava, Вот ты привел ссылку на Википедию... Ну почему ж ты сам эту статью не прочитаешь? https://ru.wikipedia.org/wiki/Венгерская_нотация я вполне ее прочитал, как и английскую версию. там даже близко нет того, на что ты намекаешь. хотя в попытке сохранить лицо - считать, что любой префикс, приписанный к имени класса (включая прилагательные и все, что прописано в camel нотации) - это все есть венгерская нотация, тебе конечно может померешиться там всякое. ну хочешь считать так (упорствовать в своих заблуждения) - считай, ктож тебе запретит-то :) типа сохраненное лицо то важнее, ктоже спорит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:06 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012nojavaдурь несусветная. как и вся венгерская нотация. как и все эти перловые, PHP-ные и бейсиковские префиксы типа. тип переменной задекларировать нужно лишь однажды. но зачем с собой возить декларацию типа переменной 10 местах использования этой переменной - это вопрос. Затем, что через пол годика, когда понадобиться заглянуть в текст программы /не говоря уже об сторонних разработчиках/ можно будет в обычном notepad понять, что за тип переменной ... да зачем в обычном notepad, давай понизим уровень оснащенности до бумаги, нет, до наскальных надписей? господи, зачем это все открывать в notepad? Владимир2012Далее развивать суждение не буду /вариации на тему/. PS: Ваше утверждение почти равносильно следующему диалогу. - Мне квас нравится. - Что за дурь несусветная нужно пить ПИВО! еще один упорствующий? господа, если вы не вьемлете доводы даже таких людей, как Торвальдс или весь гугл, то что с вами делать? кирпичи об голову разбивать? хотите делать так как привыкли - делайте. в 20-м веке миллионы людей категорически отказывались на автомобилях ездить и на поездах, чай на телеге сподручнее и привычнее. ну... тоже они имели на то свои причины, вполне им актуальные и очевидные, бесспорно. но кто сейчас на телегах то ездит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaкак и вся венгерская нотация. как и все эти перловые, PHP-ные и бейсиковские префиксы типа. ... пока это лечится только статическими анализаторами, но... В PHP нет жестко заданных типов. Поэтому обобщать не надо. Не нужна она сегодня в С/С++, но это не означает что вообще нигде не нужна. Как ни странно ее придумали для С, лично я узнал о ней из книги про С, в те времена когда не было статических анализаторов, не было студий с подсказками, код тогда писали в примитивных текстовых редакторах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:14 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaну... тоже они имели на то свои причины, вполне им актуальные и очевидные, бесспорно. но кто сейчас на телегах то ездит?Привычка-с! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:17 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima Tnojavaкак и вся венгерская нотация. как и все эти перловые, PHP-ные и бейсиковские префиксы типа. ... пока это лечится только статическими анализаторами, но... В PHP нет жестко заданных типов. Поэтому обобщать не надо. Не нужна она сегодня в С/С++, но это не означает что вообще нигде не нужна. Как ни странно ее придумали для С, лично я узнал о ней из книги про С, в те времена когда не было статических анализаторов, не было студий с подсказками, код тогда писали в примитивных текстовых редакторах. имелось в виду использование $ в имени переменной - данная закорючка говорит не о типе, а о назначении (имени) - вот это будет переменной. вполне себе в духе вон русскоязычной версии статьи о венгерских нотациях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:21 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaа вот что стоило бы сделать - так это убрать слабую типизацию - и запретить присваивать int в size_t, без явного приведения. вот это было бы весьма полезно. так венгерская нотация как-раз помогает порешать проблемы типов, недорешанные разработчиками ЯП. Одно дело написать Код: plaintext 1. 2. 3. 4. и Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:22 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima Tif(ix > uy) // написав это невольно задумаешьсяТы что?! Задумываться это не путь людей точно знающих что венгерская нотация это зло во плоти. Они лучше мышкой над переменной помашут в MSVS и узнают тип переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:28 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaвполне себе в духе вон русскоязычной версии статьи о венгерских нотациях. Если ты всегда писал на ЯП с достаточно жесткой типизацией (С/С++ и т.п.), то тебе не понять проблем тех у кого не было вообще типов переменных, нотация это просто удобный костыль, который позволяет порешать проблему незамеченную разработчика ЯП. Почитай что я писал тут 19428484 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:28 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 20:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima T Код: plaintext 1. 2. 3. 4. Мне вот не даёт покоя Delphi/Pascal-евский with. Придумал гипотетическое расширение к language. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:11 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaПотому что оба случая ее применения говорят о кодировании типов. https://ru.wikipedia.org/wiki/Венгерская_нотация это потому, что вот P.S. хотя, конечно, википедия - это источник знаний для настоящих профессионалов, чё уж )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:17 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
МодераторКак-то постишь неаккуратно. Ссылка битая все время. ПоправилПервый символ порчу умышленно - для того, чтобы не засорять страницы всякими jpg, ... Модератор: Клади под спойлер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:18 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Я для своего дипломного проекта создавал API который плотно работал с инженерной графикой. И мне нужны были префиксы обозначающие точку на плоскости (v2), точку в пространстве (v3), и нормированную точку (кватернион) (v4). Здесь цифра обозначала размерность. Или количество double-величин в структуре. Эти-же точки обозначали и вектора. С ними надо было работать много и плотно и не ошибаться. До тех пор пока я эти префиксы не ввел - не мог побороть кучу багов. Впрочем это эпизод. Я-бы не стал распространять префиксные нотации везде где ни попадя. Но для некоторых предметных областей когда есть узкий набор API - вполне себе разумно создавать домен префиксов. И критиковать за эту активность программиста - никто не имеет права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:29 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonИ критиковать за эту активность программиста - никто не имеет права.кроме прославленных троллей sql.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:33 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Я здесь говорю скорее о моральном праве. Создатель алгоритма или API помогал себе. Делал маленькие закладочки. Или узелки на память. И никаких задач глобализации за этим не стояло. Это просто технический приём и не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:36 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
mayton, И как OpenGL справляется.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 22:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaSashaMercurynojava, да ладно бы радикальные. Они неверные. что именно неверное я говорил? даже интересно стало. конкретно? Далее я пояснил. SSnojava, да ладно бы радикальные. Они неверные. В чем-то, о чем вы говорите, есть истина, при этом как правило она на поверхности, но что-то из ваших суждений откровенно противоречит принятому положению вещей Действительно, некоторая часть того, что вы говорите соответствует действительности. Пусть какие-то вещи очевидны, в любом случае, их порой нужно произносить и с ними можно согласиться. Таким образом, я не утверждаю, что всё что вы говорите, неправильно, и я не говорю, что все те очевидные вещи что вы говорите слишком очевидны, чтобы об этом молчать. Тем не менее, за счет того, что с некоторыми вашими утверждениями сложно не согласиться, и их бесспорно можно принять за истину, вы в общем потоке своего сознания добавляете некоторые суждения, которые являются только вашим личным мнением, и никак не общепринятым, и пытаетесь их выдать как неприкасаемые суждения. И за счет этого, складывается двоякое мнение - слушать ли то, что вы говорите?(пусть даже вам безразлично, слушают вас или нет) С одной стороны, возможно это интересно, с другой, если начинаешь читать внимательно, то сложно согласиться со всем. Если бы вы выражали свои взгляды менее радикально, то вероятно не было бы такого эффекта. Что касается венгерской нотации. Ниже вы привели цитату авторEncoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. Поясню вам. Венгерская нотация создавалась не для программы осуществляющей компиляцию. Она создавалась для программиста. Ее основным назначением является удобство при чтении и анализе кода. Не всегда, когда вы читаете код, вы используете IDE. Кроме того, под венгерской нотацией в настоящее время следует скорее понимать не систему префиксов-типов, а систему префиксов. Где-то данная нотация будет избыточной, где-то она используется неправильно. В каких-то проектах она используется в качестве основной системы нотаций(пусть даже таких проектов мало, мне это не известно), в каких она применяется только локально. Потому неправильно делать столь категоричные выводы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 04:37 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaтопик вообще-то не про то, как "помогите подключить библиотеку", а про критику принятых подходов.не, топик не про критику подходов, топик про отсутствие(незнание мной) подходов для быстрой и удобной разработки на сяхх. nojavaА название проекта можно?можно, но это закрытый проект, код посмотреть нельзя, его нет во внешних cvs. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 06:15 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaНу... ок, монохромные мониторы окончательно исчезли в 90-хДа и ныне можно установить в Windows режим при котором все страницы будут в монохроме. Незабываемое зрелище! Все сайты при этом бывают похожи как близнецы-братья /так как все страусинные перья стали одного цвета/. Одно время даже использовал эту возможность /хотя монитор позволял отображать цвета/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 10:29 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Монохромные TFT LCD матрицы все же существуют. http://www.winstar.com.tw/products/tft-lcd/monochrome-tft-lcd.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 10:39 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonМонохромные TFT LCD матрицы все же существуют. http://www.winstar.com.tw/products/tft-lcd/monochrome-tft-lcd.html если серьёзно - в медицинских мониторах монохромные матрицы применяются https://www.nec-display-solutions.com/p/me/en/products.xhtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 10:50 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Часто при обсуждении "удобств" и "не удобств" в языках программирования высказываются только крайние точки зрения - мол это плохо и наоборот. При этом забывают, что у всех людей имеются некие свои стили /и в жизни и в программировании/. И скорее всего нужно быть терпимыми к этому ... /если они не в антогонизме с совестью/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 11:03 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012, там пишут: Backed by years of experience in the research and development of medical LCD displays, NEC offers a high quality range of true 10-bit grayscale diagnostic monitors featuring an optimal image quality and performance for digital mammography. Насколько я разбираюсь, 10-bit уровень серого нельзя получить обычными файловыми форматами графики. Jpeg - уже не вариант. Он загрубляет до 256 уровней после восстановления из DCT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 11:18 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Изопропилесли серьёзно - в медицинских мониторах монохромные матрицы применяются https://www.nec-display-solutions.com/p/me/en/products.xhtml Они не монохромные, а черно-белые, т.е. в оттенках серого. По этой ссылке написано "10-bit grayscale" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 11:31 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
mayton10-bit уровень серого нельзя получить обычными файловыми форматами самый обычный tiff , dng ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:16 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Dima TОни не монохромные, а черно-белые, т.е. в оттенках серого хорошо, grayscale - устроит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 13:17 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonDima T Код: plaintext 1. 2. 3. 4. Мне вот не даёт покоя Delphi/Pascal-евский with. Придумал гипотетическое расширение к language. Код: plaintext 1. 2. 3. 4. 5. 6. 7. господи, ну что за детский сад! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. в остальном аналогично. да, gcc, vs не позволяют поймать переприсваивание разных числовых типов - разных, в части разные typedef от int без проблем переприсваиваются. но нормальные статические анализаторы - вполне могут пояснить, что ты в переменную типа "номер колонки" присваиваешь тип "номер строки". Нужно просто чуть напрячься и настроить там ключи для такой проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:06 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
SashaMercuryТем не менее, за счет того, что с некоторыми вашими утверждениями сложно не согласиться, и их бесспорно можно принять за истину, вы в общем потоке своего сознания добавляете некоторые суждения, которые являются только вашим личным мнением, и никак не общепринятым К примеру? где конкретика? SashaMercuryЧто касается венгерской нотации. Ниже вы привели цитату авторEncoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. Поясню вам. Венгерская нотация создавалась не для программы осуществляющей компиляцию. Она создавалась для программиста. Ее основным назначением является удобство при чтении и анализе кода. Не всегда, когда вы читаете код, вы используете IDE. Кроме того, под венгерской нотацией в настоящее время следует скорее понимать не систему префиксов-типов, а систему префиксов. Где-то данная нотация будет избыточной, где-то она используется неправильно. В каких-то проектах она используется в качестве основной системы нотаций(пусть даже таких проектов мало, мне это не известно), в каких она применяется только локально. Потому неправильно делать столь категоричные выводы зачем ты говоришь это мне? напиши Торвальдсу (и тысячам разработчиков, которые приняли указанную выше конвенцию) письмо, о том, что ты не brain-damaged, а потом опубликуй ответ? правила какие-то правильные, применяемые неправильно... о чем вообще речь-то? он вполне пояснил, что задачу контроля совместимости типов может делать компилятор и лексический анализатор, не надо это принудительно вешать на программиста. и он прав - лишняя информация только затрудняет чтение и понимание кода (это и подразумевается под confused). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:13 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
Торвальдс не разрабатывал Excel-подобные приложения, и наверное не юзал OpenGL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:49 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonТорвальдс не разрабатывал Excel-подобные приложения, и наверное не юзал OpenGL.и вообще он говорит о венгерской нотации, исполненной в стиле википедии, а не в стиле от её автора )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 17:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonТорвальдс не разрабатывал Excel-подобные приложения, и наверное не юзал OpenGL. и что в них такого? и кстати в ядре вовсю префиксы используются, как же без них? вот тут nr https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/netrom/nr_in.c?id=refs/tags/v4.7-rc7 madvise https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/mm/madvise.c?id=refs/tags/v4.7-rc7 вполне себе хорошее правило - использовать имя файла (модуля) как префикс имени публичного символа. контролировать уникальность имен файлов вполне себе просто, как и написать чекалку публичных имен (кстати, надо взять на вооружение). egorychmaytonТорвальдс не разрабатывал Excel-подобные приложения, и наверное не юзал OpenGL.и вообще он говорит о венгерской нотации, исполненной в стиле википедии, а не в стиле от её автора )) и в чем отличия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 18:12 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, то что ты привел - это не Венгерская нотация. Это просто кастомное имя. Любой кодер так делает интуитивно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 18:18 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonnojava, то что ты привел - это не Венгерская нотация. Это просто кастомное имя. Любой кодер так делает интуитивно. да? а что такое венгерская нотация в твоем понимании? ну, на примере OpenGL? бери любое имя функции, и скажи - где там она начинается и где заканчивается. про "кастомное" имя - это пять. а можешь привести пример некастомного имени? аж интересно стало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 18:21 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaи в чем отличия? Силы зла завладели венгерской нотацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 18:42 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
egorychnojavaи в чем отличия? Силы зла завладели венгерской нотацией и? вот тут описано то-же самое, что и в твоей ссылке выше https://ru.wikipedia.org/wiki/Венгерская_нотация а ты так и не ответил на вопрос - "и вообще он говорит о венгерской нотации, исполненной в стиле википедии, а не в стиле от её автора ))" в чем отличия стиля википедии от стиля автора? открой в википедии раздел "Префиксы, задающие смысл" и расскажи, чем они отличаются от Apps notation? в английской https://en.wikipedia.org/wiki/Hungarian_notation тоже говорится ровно то-же, что там пытается рассказать Спольски. так в чем же суть упомянутых тобой отличий, а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 18:52 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavamaytonnojava, то что ты привел - это не Венгерская нотация. Это просто кастомное имя. Любой кодер так делает интуитивно. да? а что такое венгерская нотация в твоем понимании? ну, на примере OpenGL? бери любое имя функции, и скажи - где там она начинается и где заканчивается. про "кастомное" имя - это пять. а можешь привести пример некастомного имени? аж интересно стало... Мне кажется что ты какой-то странный спорщик-оппозиционер. Ты вроде-бы умен но КМК просто встреваешь в дискурс и занимаешся обструкцией всего. Я ... честно не хочу ничего доказывать любой ценой. Все что я писал это просто моё ИМХО. Можешь не соглашаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:08 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonnojavaпропущено... да? а что такое венгерская нотация в твоем понимании? ну, на примере OpenGL? бери любое имя функции, и скажи - где там она начинается и где заканчивается. про "кастомное" имя - это пять. а можешь привести пример некастомного имени? аж интересно стало... Мне кажется что ты какой-то странный спорщик-оппозиционер. Ты вроде-бы умен но КМК просто встреваешь в дискурс и занимаешся обструкцией всего. Я ... честно не хочу ничего доказывать любой ценой. Все что я писал это просто моё ИМХО. Можешь не соглашаться. Я бы рад с тобой поспорить, но ты, как и предыдущий спорщик - похоже пытаешься говорить о том, о чем не имеешь ни малейшего представления. Тут вон модератор страницей предыдущей рассказывал, что префиксы модулей в именах функций - это венгерская нотация. Автор предыдущий сел в лужу увидя какие-то отличия между Спольски и википедией (хотя там === эквивалентность). Ты же сел в лужу, утверждая, что Торвальдс не разрабатывал крупные системы, вроде Excel и OpenGL, потому он дескать неуч и не в теме. Когда я тебя прижал к стене и попросил конкретики - что там у Торвальдса не так, в сравнении, ты начал рассказывать что не хочешь метать бисер перед спорщиками. Хотя вся проблема лишь в том - что ты всего лишь понятия не имеешь о том, о чем пытаешься рассуждать, Торвальдс тут абсолютно не при чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:13 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, нет... это просто удивительно. Ты живешь в мире фантазий брат. Ты просто додумываешь и дописываешь мне слова которых я не говорил. Зачем ты это делаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:16 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonnojava, нет... это просто удивительно. Ты живешь в мире фантазий брат. Ты просто додумываешь и дописываешь мне слова которых я не говорил. Зачем ты это делаешь? ты не говорил вот это 19432033 о да, это я грибов наелся наверное и пошел ловить покемонов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:19 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaон дескать неуч и не в теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:31 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonnojavaон дескать неуч и не в теме. ну так это подразумевалось из контекста. иначе какой смысл был тебе рассказывать про то, что он в чем-то то там не участвовал? ну он наверное и в паралимпийских играх не участвовал, и что с того? или с какой целью ты это вот то сказал, про неучастие, как не про констатацию некомпетентности в вопросе? реально - зачем это было тобой сказано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:33 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojava, вроде уже все согласились что в С/С++ Венгерская нотация не нужна, может дальше поедем? Топик как бэ про другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 19:53 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
maytonМне кажется что ты какой-то странный спорщик-оппозиционер. Ты вроде-бы умен но КМК просто встреваешь в дискурс и занимаешся обструкцией всего. Типичный синдром форумчанина с менее 1000 сообщений. Это скоро пройдёт, осталось ещё 900... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 21:08 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
nojavaАвтор предыдущий сел в лужу увидя какие-то отличия между Спольски и википедией (хотя там === эквивалентность).как то толсто. Спольски противопоставляет, википедия объединяет, где же тут эквивалентность? Читай внимательно, там не много букв, куда меньше, чем в документации по stl)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:05 |
|
||
|
Удобство и скорость разработки в C++
|
|||
|---|---|---|---|
|
#18+
MasterZivТипичный синдром форумчанина с менее 1000 сообщений. Это скоро пройдёт, осталось ещё 900...да не, это тролль, а вы его кормите зачем то ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 22:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018471]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
102ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
204ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 364ms |

| 0 / 0 |
