Страница 6 из 14

Интересное о технологиях

Добавлено: 09 июн 2016, 11:53
Malin
Почти всё что угодно можно завернуть в функцию, это понятно. Я говорил о языке который не позволит это сделать самому методом костыля, а о языке в котором это будет реализовано сразу и главное логично.
Я говорил о языке который не позволит это сделать самому методом костыля, а о языке в котором это будет реализовано сразу и главное логично.

Странное понятие костыля. Костыль - это исправление\компенсация последствий неправильной работы программы. Компилятор работает правильно.
Иначе можно сделать надстройку над компилятором С# который символ => будет разворачивать до завёрнутого в функцию копирования объекта. Тогда ты пользуясь этим символом => будешь уверен, что это не костыль?
Это пример того как не надо делать интерфейсы. Один и тот же оператор должен выполнять одно и то же. А для других возможностей (в данном случае связывание с другой ссылкой) нужен другой оператор.

Вообще-то оператор то один, и он делает одно и тоже (знак равенства) он копирует.
В случае структур - саму структура, в случае указателей (ссылок) - сам указатель. Просто возникает не до понимание программистом того, что копируется. Так сказать не компетентность программиста вставляет палки в его же колёса.
Но я с тобой согласен, высокоуровневый язык должен быть более понятным. И в C# хорошо бы было бы разделить указатели и переменные, но не оператором как ты предлагаешь, а кодовым словом. Например:
int A = 5
ref int C = ref A;
C = 10; //присваивает A = 10;
Думаю тут проблема в том, что языки программирования делают программисты, а не инженеры и дизайнеры.

Программисты в принципе то инженеры. А дизайнеры порой такого на воротят)
Вероятно кэши процов станут пообъёмнее. Может ещё что-то. Какие-то программные технологии и усовершенствования языков в этом плане. Не знаю.

Не знаешь, а говоришь. Кеш - это "оперативная память процессора". В случае её разрастания, она просто переродиться в оперативную память, ту которую мы знаем сейчас. Но разрастание кеша повлияет на её скорость, сделать кеш большим ещё труднее. Тут же скорости офигенные, становится важным даже распространение сигнала, сколько времени электромагнитная волна бежит по плате. Иначе кеш бы давно уже был огромным. Вопрос куда глубже. И языки тут ни причём, процессор языков не понимает, у него АЛУ да инструкции.

Интересное о технологиях

Добавлено: 09 июн 2016, 12:48
Vasaka
Странное понятие костыля. Костыль - это исправление\компенсация последствий неправильной работы программы. Компилятор работает правильно.
Иначе можно сделать надстройку над компилятором С# который символ => будет разворачивать до завёрнутого в функцию копирования объекта. Тогда ты пользуясь этим символом => будешь уверен, что это не костыль?
Это плохо тем, что в рамках языка остаются обе реализации. Читая чужой код ты будешь этого лишён. Человек читая твой код будет вынужден разбираться что ты там навертел такое.
Это ещё не считая того, что люди существа эмоциональные и подобные вещи приводят их в возмущение, а ещё чаще в негодование и приводят к локальным холиварам.

Вообще-то оператор то один, и он делает одно и тоже (знак равенства) он копирует.
В случае структур - саму структура, в случае указателей (ссылок) - сам указатель. Просто возникает не до понимание программистом того, что копируется. Так сказать не компетентность программиста вставляет палки в его же колёса.
Но я с тобой согласен, высокоуровневый язык должен быть более понятным. И в C# хорошо бы было бы разделить указатели и переменные, но не оператором как ты предлагаешь, а кодовым словом. Например:
int A = 5
ref int C = ref A;
C = 10; //присваивает A = 10;
Или так! Не имеет значения как в деталях это будет выглядеть. Главное:
1. Это должно быть интуитивно понятно и работать одинаково. Не должен один оператор работать по разному в разных случаях.
2. Это должно быть предельно просто. Либо другой оператор, либо добавочное кодовое слово, либо что-то другое, но такое же простое.

Программисты в принципе то инженеры. А дизайнеры порой такого на воротят)
Наворотят. Будь уверен. Поэтому над языком должны работать и те и другие и каждый отвечать за свою область. Чтобы мы потом не сталкивались с такими очевидными недоработками, которые дизайнеры усваивают даже не в первом классе, а в детском саду ещё.

Не знаешь, а говоришь. Кеш - это "оперативная память процессора". В случае её разрастания, она просто переродиться в оперативную память, ту которую мы знаем сейчас. Но разрастание кеша повлияет на её скорость, сделать кеш большим ещё труднее. Тут же скорости офигенные, становится важным даже распространение сигнала, сколько времени электромагнитная волна бежит по плате. Иначе кеш бы давно уже был огромным. Вопрос куда глубже. И языки тут ни причём, процессор языков не понимает, у него АЛУ да инструкции.
Естественно не знаю как это в деталях изменит наш мир. Но вот новые возможности открываются - однозначно.

Интересное о технологиях

Добавлено: 09 июн 2016, 15:46
Malin
Это плохо тем, что в рамках языка остаются обе реализации. Читая чужой код ты будешь этого лишён. Человек читая твой код будет вынужден разбираться что ты там навертел такое.
Это ещё не считая того, что люди существа эмоциональные и подобные вещи приводят их в возмущение, а ещё чаще в негодование и приводят к локальным холиварам.

Кх. Вообще почти любую вещь в языке можно сделать множеством способов. И в любом случае ты "войдёшь в чужой храм", если залезешь в чужой код. Это характерно даже для ассемблера, где простора куда меньше чем в высокоуровневых языках, но даже там можно встретить такое... Разные люди - разные подходы.
Не должен один оператор работать по разному в разных случаях.

Он работает одинаково.
Но вот новые возможности открываются - однозначно.

Пустая фраза. Я уже об этом говорил)

Интересное о технологиях

Добавлено: 09 июн 2016, 16:36
Vasaka
Кх. Вообще почти любую вещь в языке можно сделать множеством способов. И в любом случае ты "войдёшь в чужой храм", если залезешь в чужой код. Это характерно даже для ассемблера, где простора куда меньше чем в высокоуровневых языках, но даже там можно встретить такое... Разные люди - разные подходы.
Нужно делать изначально нормальные языки, а не городить костыли каждому под себя, вот что я хотел сказать. Ты против того чтобы изначально сделать язык с нормальным, предсказуемым синтаксисом?

Он работает одинаково.
Можно и на чёрное говорить белое и стоять на своём насмерть, только объективной реальности это не меняет.
Открываем любой учебник по Си Шарп и читаем что оператор присваивания работает по разному для значимых и ссылочных типов (в самом начале учебника).

Пустая фраза. Я уже об этом говорил)
Так и запишем. Для Malin'а это пустая фраза.
Для меня нет.

Интересное о технологиях

Добавлено: 09 июн 2016, 18:44
Malin
Нужно делать изначально нормальные языки, а не городить костыли каждому под себя, вот что я хотел сказать. Ты против того чтобы изначально сделать язык с нормальным, предсказуемым синтаксисом?

Но он и сейчас нормальный. Нормальный не значит лучший. Но он нормальный, он предсказуемый. Просто нужно понимать, что он делает.
Можно и на чёрное говорить белое и стоять на своём насмерть, только объективной реальности это не меняет.
Открываем любой учебник по Си Шарп и читаем что оператор присваивания работает по разному для значимых и ссылочных типов (в самом начале учебника).

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

Интересное о технологиях

Добавлено: 09 июн 2016, 19:27
Vasaka
Но он и сейчас нормальный. Нормальный не значит лучший. Но он нормальный, он предсказуемый. Просто нужно понимать, что он делает.
Ну хорошо. Для тебя нормально когда один и тот же оператор в разных случаях делает разное. Для меня не нормально. Для меня нормально когда один и тот же оператор делает в разных случаях одно и то же.
Исходя из этого для тебя Си Шарп - нормальный. Для меня - не нормальный.

Верь, верь этим учебникам. На самом деле происходит копирование байтов и там и там. Для компьютера это один и тот же оператор, тут он копирует байты и там байты. Разница в том как программист\компилятор использует эти байты, как значения или как адрес. В этом то и возникает путаница, и некомпетентный программист собирает грабли. Нужно ведь не только знать какой оператор что делает, но и знать что на самом деле происходит "за ширмой" этого оператора.
Да чё там. С таким подходом можно пойти дальше и сказать что все операторы во всех языках программирования делают одно и то же. А именно отправляют инструкции процессору. Всё просто. Исходя из этого заключения мы теперь можем не учить все операторы, а писать один и тот же во всех случаях.

Это всё равно что заказываешь билет через интернет на поезд в плацкарт. Приезжаешь на вокзал, а тебя ведут в СВ и выясняется что сняли с твоей карты не 2 т.р. а 20 т.р.
А на твои возмущения как так? Спрашивают, А вы поставили галочку что вам нужен плацкартный вагон? - Да. А на вашей карте было больше 20 т.р.? - Да. - А вы что не читали инструкцию к нашему интернет магазину? Если у вас хватает денег на СВ, вам автоматически заменяют плацкарт на СВ и списывают деньги за СВ. Ах вы не читали инструкцию? Ну ничего не сделаешь. Добро пожаловать в наш вагон.
(ну тут ещё можно написать, что в обоих случаях функция работала одинаково, как по твоему. В обоих случаях на сервер записалось несколько килобайт данных).

Интересное о технологиях

Добавлено: 10 июн 2016, 12:01
Malin
Да чё там. С таким подходом можно пойти дальше и сказать что все операторы во всех языках программирования делают одно и то же. А именно отправляют инструкции процессору. Всё просто. Исходя из этого заключения мы теперь можем не учить все операторы, а писать один и тот же во всех случаях.

Я лишь намекал на то что нужно понимать что делаешь)
Это всё равно что заказываешь билет через интернет на поезд в плацкарт. Приезжаешь на вокзал, а тебя ведут в СВ и выясняется что сняли с твоей карты не 2 т.р. а 20 т.р.
А на твои возмущения как так? Спрашивают, А вы поставили галочку что вам нужен плацкартный вагон? - Да. А на вашей карте было больше 20 т.р.? - Да. - А вы что не читали инструкцию к нашему интернет магазину? Если у вас хватает денег на СВ, вам автоматически заменяют плацкарт на СВ и списывают деньги за СВ. Ах вы не читали инструкцию? Ну ничего не сделаешь. Добро пожаловать в наш вагон.
(ну тут ещё можно написать, что в обоих случаях функция работала одинаково, как по твоему. В обоих случаях на сервер записалось несколько килобайт данных).

Вообще-то так и есть. Везде. В случае с электричеством это звучит как "не знаешь - не лезь". В случае с программирование "не знаешь - мучайся". Знание - сила.

Интересное о технологиях

Добавлено: 10 июн 2016, 13:03
Vasaka
Я лишь намекал на то что нужно понимать что делаешь)
Вообще-то так и есть. Везде. В случае с электричеством это звучит как "не знаешь - не лезь". В случае с программирование "не знаешь - мучайся". Знание - сила.
Так об этом я и говорил. Приступая к изучению языка Си Шарп, одно из первых что нам предстоит узнать, это то, что оператор присваивания в случае значимых и ссылочных типов делает разное. Оффтоп

Вот так и живём. Расставляем сами себе грабли, чтобы потом с достоинством их преодолевать, вместо того, чтобы сделать сразу понятно и интуитивно и изначально не мучиться. Оффтоп

Интересное о технологиях

Добавлено: 11 июн 2016, 09:17
Vasaka
Изображение

Интересное о технологиях

Добавлено: 14 июн 2016, 17:58
Malin
Так об этом я и говорил. Приступая к изучению языка Си Шарп, одно из первых что нам предстоит узнать, это то, что оператор присваивания в случае значимых и ссылочных типов делает разное. Оффтоп
В одном случае копирует значение в другую переменную и они работают независимо друг от друга. Меняешь одну, на другой это никак не сказывается. А в ссылочных типах ты создаёшь вторую ссылку (второй ярлык на рабочем столе) к тому же объекту (к одному и тому же файлу на жёстком диске) и изменение значений в одной переменной меняет значения и в другой (так как это один и тот же объёкт)

Тебе для расширения кругозора нужно попробовать по программировать на С и поиспользовать указатели, тогда поймёшь о чём я.