
Rafael
30.10.2016
13:30:09

Kirill
30.10.2016
13:30:31
Нафиг это надо? Компилятор/компоновщик все равно одинаковые реализации удалит, оставив одну.

Rafael
30.10.2016
13:32:22

Google

Kirill
30.10.2016
13:32:31
Для ограничения типов Саттер предлагал вводить классы ограничений

Rafael
30.10.2016
13:32:32
уже больше 5 лет прошло с момента их релиза

Kirill
30.10.2016
13:32:37
Но имхо это вообще не нужно

Rafael
30.10.2016
13:33:13

Alex Фэils?︙
30.10.2016
13:58:03
И лучше документированный в спеке


zk
30.10.2016
17:45:18
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже


Rafael
30.10.2016
17:48:25
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
Вообще-то foreach уже есть


Alex Фэils?︙
30.10.2016
17:48:44
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
? ничего нового я не уаидел, но круто)
Я не помню, был ли он там


zk
30.10.2016
17:49:37
Нет

Google


Alex Фэils?︙
30.10.2016
17:53:27
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
@ned_ogl ?


zk
30.10.2016
17:55:59
@ned_ogl тебе наш Павлюченко очень сильно рекомендовал 81ю главу Чехрели
Андроид чмо, Павлюченко -> Ревьювер

Alex Фэils?︙
30.10.2016
17:57:48
Жесть автозамена

zk
30.10.2016
18:00:07
Она меня накаляет, но иногда нужна, приходится мириться
@ProgroBot

Alexey
30.10.2016
18:51:21
Любопытный бот
спасибо

Rafael
30.10.2016
18:54:56
А почему с D, а не с питоном?

Alex Фэils?︙
30.10.2016
18:54:56
Да. Тут был когда-то. Удалил, т.к. флуда много

zk
30.10.2016
18:56:56

Rafael
30.10.2016
18:57:41
Ну кажется в D есть gc
А значит нет того механизма работы с памятью как в плюсах

zk
30.10.2016
18:58:24
К чему это?


Rafael
30.10.2016
18:58:43
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
К вот этому
Ну тип там можно половину претензий выкинуть сразу тогда


zk
30.10.2016
19:01:26
Притензий столько сколько косяков, без всякого отношения к Ди


Ned Ogl
30.10.2016
20:08:20
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
Это хорошо, спасибо
Познакомь с чуваком с D

Google

Ned Ogl
30.10.2016
20:08:52
Я сам D начал и учу потихоньку

@CriOnsKry
30.10.2016
20:51:19

Ned Ogl
30.10.2016
20:59:56
совсем небольшую ОСь??

Fox
30.10.2016
21:02:24

Ned Ogl
30.10.2016
21:02:39
ну мало ли препод какой-нить

Fox
30.10.2016
21:02:59
Возможно)


Ned Ogl
30.10.2016
21:11:07
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного:
Нужна поддержка foreach
Переполнение в конструкторах
Отсутствие деления
Много копипасты
*Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно
**Стремные исключения
Отсутствие документирующих комментариев
что-то еще, но я забыл
*) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие
// test.cpp
...
// A(m,N), B(N,m)
Matrix<double> A(M,N);
Matrix<double> B(N,M);
...
A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m)
...
catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый.
**) Нужно вынести определения классов исключений в одну область видимости с Matrix<>
Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике).
Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}.
Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли.
Надоело писать... может позже
так, я просто в машине ехал. пожалуй, отвечу развёрнутее
1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%.
2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение
3)переполнение в конструкторах? щито?
4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело.
5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш.
6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать.
7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю.
за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо
кстати, форич - тоже встроенная фишка D и реализовали её в СТЛ судя по всему "из зависти"


Rafael
30.10.2016
21:18:37

Ned Ogl
30.10.2016
21:19:23

Ned Ogl
30.10.2016
21:19:34

ovf
30.10.2016
21:29:36

Ned Ogl
30.10.2016
21:30:00
оо, а ты лиспер?
блин, всю жизнь было интересно, что это, и ни разу не дошли руки поглубже узнать
он щас используется вообще?

ovf
30.10.2016
21:34:41
всё используется кем-нибудь где-нибудь. промышленных программистов на лиспе я в своей жизни парочку видел, потом, скажем, scheme очень широко используется в cs, на clojure хипстеры что-то пишут

Ned Ogl
30.10.2016
21:35:08
ахаха


Alex Фэils?︙
30.10.2016
21:37:29
так, я просто в машине ехал. пожалуй, отвечу развёрнутее
1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%.
2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение
3)переполнение в конструкторах? щито?
4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело.
5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш.
6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать.
7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю.
за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо
1) Это имеось в виду for (auto elem: aray) {} - PR кину

Google

Ned Ogl
30.10.2016
21:37:58
а, длял этого итераторы нужны кажись

Admin
ERROR: S client not available


Alex Фэils?︙
30.10.2016
21:38:09
так, я просто в машине ехал. пожалуй, отвечу развёрнутее
1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%.
2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение
3)переполнение в конструкторах? щито?
4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело.
5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш.
6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать.
7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю.
за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо
3) имелось в виду целочисленные переполнеия и или потеря точности
Begin(), end()


Ned Ogl
30.10.2016
21:38:29
с другой стороны непонятно, как можно по матрице вот так линейно бегать фором?
матрица - это прямоугольник
по ней бегают с 2мя координатами

Vladislav
30.10.2016
21:38:48

Detur
30.10.2016
21:39:20

Ned Ogl
30.10.2016
21:39:40
бесспорно, но у меня нет чего-либо чтобы пробежаться по ней линейно

Detur
30.10.2016
21:40:10
ну по двумерному массиву можно бегать линейно же

Ned Ogl
30.10.2016
21:40:10
кроме как A(0, 1) ... A(0, rows*cols)
можно кнешн) но тут бедняге придётся извращаться) первая координата по факту номер строки, вторая - оффсет) если номер обнулить и бегать оффсетом, можно пробежать её линейно. но надо ли?
это всё-таки не вектор...

Detur
30.10.2016
21:41:57
можно тупо указатель инкрементировать

Ned Ogl
30.10.2016
21:42:06
я плохо представляю себе задачу, когда это нужно*

Vladislav
30.10.2016
21:42:31
логичнее чтобы итерация по матрице итерировала строки, а не элементы. А строки уже пусть итерируются по элементам

Ned Ogl
30.10.2016
21:42:44
забить значениями разве только, но для этого будет соотв. конструктор.
я еси честно не умею в итераторы(

Google

Ned Ogl
30.10.2016
21:43:01
я даже плохо понимаю, как они изнутри работают
честно гря использовал дважды
тогда же когда и foreach?
справедливое замечание

Square
30.10.2016
21:51:15
Здрасьти

Ned Ogl
30.10.2016
22:47:42
господа, а надо ли расставлять noexcept, и зачем оно?

Stanislav
30.10.2016
22:53:13
https://habrahabr.ru/post/164221/

Alex Фэils?︙
30.10.2016
22:59:19