Почему хваленые ИИ не понимают С++? - страница 2

 
Slava #:

Тут только "опыт - сын ошибок трудных"

Все входные параметры и/или условия можно проверить заранее. Не знаю ни одного неконтролируемого исключения. Приведи хотя бы один пример, я могу заблуждаться, забыл, сплю etc

Я могу себе представить функцию решения системы линейных уравнений. Деление на ноль - на раз! Но только если функция запрограммирована тем, кто верит в исключения. Правильный программист проверит делитель

(А ещё проверять указатели на NULL мама не велела)

Легко, вот пример из 2004 г. примерно. Работал по автоматизации энергоуправления ж/д, заменили старую аппаратуру 60-х годом на нашу цифру. И была там одна моя разработка, спец. модем для телеуправления по меди, как временная замена, пока тянули на ЖД ВОЛС. На тяговой подстанции работала на пенсии бабуля. Старую аппаратуру не демонтировали на всякий случай, но монтажники забыли полностью ее отключить! Бабушка использовала ее, как печку для разогрева обеда и случайно нажала на старом пульте серию кнопок и получилась команда.

А мой модем был построен на дохленьком ADSP-2181 и паре 8-разрядников AT-**** от Atmel. Голое Си + ASM, никаких exceptions, конечно. Уже подробностей не помню, но от манипуляций бабули аппаратура на подстанции немного сошла с ума. А мой модем имел на МК встроенные аппаратные watchdog таймеры, которые тупо перезапускали проц, если их программа периодически не сбрасывала. Плюс я, для перестраховки, поставил еще отдельную микросхему такого таймера, который делал вообще глобальный сброс модема. Как понимаю, именно они тогда и спасли ситуацию, сохранилась связь с диспетчерской в Москве. То есть эти  watchdog таймеры явились неким аналогом исключений. Когда все рухнуло, они пересбросили девайс.

 
Slava #:

f(t)=20; - это уже какая-то гомосятина. Я тоже этого не понимаю, хотя я и не ИИ. (нет, конечно, я понимаю, но принять не могу - идите в яваскрипт)

PS ещё я не понимаю (не принимаю) goto и exceptions, потому что это - от лукавого и от лени

Это не гомосятина, а вполне себе такой способ, известный от рождения С++. Я его впервые увидел в учебнике по плюсам 1995 года выпуска)) И "Факел" я знаю. Я в те времена работал на НПО "Молния", не так далеко. И у нас был целый VAX с VAX/VMS )))

Кстати, особо эффектен вот такой способ применения:

class CLass1 {

public:

int& PrivateData() {return k;}

private:

int k;

}

Ну и где то создать объект и шаловливыми ручками вызвать в левой части присваивания метод PrivateData().

 
class SODOM
{
public:
  void operator =( const int i )
  {
    Alert("SODOMx" + (string)i);
  }
};

SODOM* f()
{
  static SODOM Sodom;
  
  return(&Sodom);
}

void OnStart()
{
  f() = 20;
}
 
Alexey Volchanskiy #:

Насчет goto — это ведь обертка для команд из серии jmp на асме.

Обёртка, но не совсем. Все эти форы, вайлы и ифы в ЯВУ придуманы, чтобы избежать таких «обёрток». В ассемблере условные и безусловные джампы - неотъемлемая часть языка. Причём реализовано гораздо красивее. И подлежит оптимизации в отличие от левого и бланкового goto.

 
Slava #:

Тут только "опыт - сын ошибок трудных"

Интересна история вопроса.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2023.12.06 20:38

Честно говоря, не понимаю, почему MQ выбрали дорогой string для SymbolInfo-функций.

Почему не стали делать SymbolID для Тестера?

 
fxsaber #:
Интересна история вопроса.

Почему не стали делать SymbolID для Тестера?

а кто сказал что string дорогой ?

потенциально - string это opaque pointer -там может физически быть всё что угодно, вплоть до байт-кода или готового jit

доступ к const литералам по имени - O(1) , всё верно придумано. 

 

Каков результат этого фрагмента кода и почему?

#include <iostream>

int f (int x, int &y);

int main ()
{
  int a = 3, b = 5;
  f (a, b);
  std::cout << a << " " << b << std::endl;
  a = f (f (f (2, a), b), a);
  std::cout << a << " " << b << std::endl;
  return 0;
}

int f (int x, int &y)
{
  int v = 2;
  x = (x - v) * (x + v);
  if (x < 5)
    y = 1;
  else
    y = x - 4;
  return y;
}


VS console output:

3 1
1 1
...Program finished with exit code 0
Press ENTER to exit console.


ИИ ответ на вопрос:

This is a C++ program that uses a function f(int x, int& y) to manipulate the variables x and y . Here’s what the program does:

  1. It initializes two integers a and b with values of 3 and 5 respectively.
  2. It calls the function f(a, b) . Inside this function:
    • It initializes an integer v with a value of 2 .
    • It changes x to (x - v) * (x + v) , which is (3 - 2) * (3 + 2) = 5 .
    • Since x is not less than 5 , it changes y to x - 4 , which is 5 - 4 = 1 .
  3. It prints the values of a and b , which are 3 and 1 respectively.
  4. It calls the function f(f(f(2,a), b), a) . This is a nested function call, so it’s executed from the inside out:
    • The innermost call is f(2, a) . Inside this function call:
      • It changes x to (x - v) * (x + v) , which is (2 - 2) * (2 + 2) = 0 .
      • Since x is less than 5 , it changes y to 1 . So, a is now 1 .
      • It returns y , which is 1 .
    • The next call is f(1, b) . Inside this function call:
      • It changes x to (x - v) * (x + v) , which is (1 - 2) * (1 + 2) = -3 .
      • Since x is less than 5 , it changes y to 1 . So, b is now 1 .
      • It returns y , which is 1 .
    • The outermost call is f(1, a) . Inside this function call:
      • It changes x to (x - v) * (x + v) , which is (1 - 2) * (1 + 2) = -3 .
      • Since x is less than 5 , it changes y to 1 . So, a is now 1 .
      • It returns y , which is 1 .
  5. It assigns the result of f(f(f(2,a), b), a) to a , which makes a equal to 1 .
  6. Finally, it prints the values of a and b , which are 1 and 1 respectively.

So, the output of this program will be:

3 1 1 1

I hope this helps! Let me know if you have any other questions. 😊


 
fxsaber #:

Для MQLx сработает.

Slava #:

Обёртка, но не совсем. Все эти форы, вайлы и ифы в ЯВУ придуманы, чтобы избежать таких «обёрток». В ассемблере условные и безусловные джампы - неотъемлемая часть языка. Причём реализовано гораздо красивее. И подлежит оптимизации в отличие от левого и бланкового goto.

Нет в асме ничего красивого. У меня был кошмар, когда писал звуковой тракт амерам для первого в мире одночипового цифрового ТВ процессора. Кстати, был изумлен, что часть дизайна этого сложного чипа делали Питерские ребята за стенкой в нашем офисе! Естественно, все на уровне Verilog и чего-то еще — не моя тема и не разбираюсь. А делали разводку, маски и печатали уже на TSMC. Я и не думал до этого, что у нас есть такие умы! Впрочем, сейчас самые умные в Кремниевой Долине...   

Я писал звук для DSP ядра на архитектуре VLIW. Попросил на всякий Гига Чат набросать справку, все верно:

Архитектура VLIW (Very Long Instruction Word) представляет собой способ организации вычислений, при котором множество операций объединяются в одну длинную инструкцию. Это позволяет увеличить пропускную способность и эффективность работы процессора, так как сокращается количество переходов и ветвлений в коде программы. В архитектуре VLIW используются сложные внутренние зависимости между операциями, что требует более сложного декодирования инструкций и более сложного процесса исполнения команд. Это может усложнить программирование для VLIW-архитектур, поскольку требуется больше усилий для оптимизации кода и доверия к оптимизации компилятора. VLIW-архитектура получила широкое распространение в различных областях, включая графические процессоры (GPU) и центральные процессоры (CPU) различных производителей, таких как Nvidia, AMD/ATI, Qualcomm и другие. Она также применяется в различных устройствах, таких как микроконтроллеры и DSP (Digital Signal Processors). Несмотря на свою сложность, архитектура VLIW предлагает преимущества в terms of throughput и efficiency, что делает ее привлекательной для различных приложений, особенно в области параллельных вычислений и обработки данных.  

Наша DSP могла молотить до 6 операций за такт, естественно разных. Например, MUL32x32 -> 64 Acc (FPU не было) + всякие регистровые операции, загрузка из памяти, переходы. Пусть там Задорнов и кричал про амеров «ну, тупы-ы-ые», ребята из Кр. Долины не стали придумывать велосипед, а заимпрувили GNU C++ под этот проц с применением паралеллизма! А потом фирма решила в следующей версии проца ставить 4 DSP со средствами взаимодействия и они начали пилить  GNU C++ и под такого монстра! А в фирме всего было 500 разрабов, это не Майкрософт!

К счастью, я до того кошмара ASM на 6*4 == 24 операции за такт не дожил, так как один монстр купил фирму для обладания патентами, а саму распустил. Так что, когда слышу восторги по поводу асма, то понимаю, что человек не участвовал в крупных коммерческих проектах. 

Одно дело сидеть дома и под чай/пивко баловаться с асмом, ощущая себя гением IT. И другое, когда тебя засыпают письмами Самсунг или Сони и требуют внести новые фичи/исправить существующие прошивки и срочно! Потому что, б***ь!, они наклепали телевизоров, все склады забиты, а прошивок нет, а нужно было позавчера! И они отправляют контейнеровоз с ТВ реселлерам в Европу и чтобы кровь из носу, когда он прибудет, у них была обработка 32-битного звука, потому что так хвастливо заявил маркетинг и реклама крутится из всех утюгов!

А у них час простоя 100500 миллионов долларов в секунду! А ты как думаешь, почему постоянно выходят обновления Винды и новые прошивки для бытовой техники? Да по простой причине! Бизнес делается ради бабок, а не совершенства.

Как-то давно, в 70-е...80-е, когда Сонька правила балом в области аудио, на конференции один корреспондент задал главе Сони вопрос:«Почему бы вам не собрать лучших инженеров и не разработать самую лучшую, самую совершенную аудио-видео аппаратуру?»

Ответ был страшен и прост:
— Потому что, пока мы 2-3-4 года будем делать идеальный звук и видео, конкуренты завалят рынок просто хорошим  


Я про бытовое РЭА в России знаю не по наслышке, есть коллега, мастер-ремонтник РЭА из Архангельска, мы с ним контачим. Рассказывал про то, как ремонтируют РЭА и меняют прошивки в условиях Северов :)) Прошу ссылку не удалять, его маленькой мастерской это не реклама, а чел толковый и пишет интересно.

А что касается того же Самсунг, у нас в фирме был негласный бойкот на покупку домой их продукции. Помню, купил в Питере новый 22" моник их производства, соблазнился ценой и тем, что контачил с СС. Моник сбоил и глючил, переключал сам собой входы сигнала, зато был дешевый и со встроенным ТВ приемником на нашем чипе :))). Через месяца три из СС прислали мне стабильную прошивку, уже 18 лет ни одного сбоя, тьфу-тьфу через плечо :)

СпецТехноРемонт электроники. | Дзен
СпецТехноРемонт электроники. | Дзен
  • СпецТехноРемонт электрони ки. 1K подписчиков Всё самое интересное из практики ремонта и эксплуатации различных электронных устройств. Меня зовут Павел. Электроника - это то, чем я занимаюсь с детства. Готов поделиться своим опытом в данном...
  • dzen.ru
Канал автора «СпецТехноРемонт электроники.» в Дзен ⭐: Всё самое интересное из практики ремонта и эксплуатации различных электронных устройств. Меня зовут Павел. Электроника - это то, чем я занимаюсь с детства. Готов поделиться своим опытом в данном направлении. Проживаю в Архангельске. Контакты для вопросов и предложений в профиле.
 
Lilita Bogachkova #:
int f (int x, int &y);

Лень в голове это крутить, y передается по ссылке, это стандартное решение. Насчет ИИ, Вы еще попробуйте YandexGPT, это вообще позор. Я как-то заинтересовался, почему в эксперименте с мышами наблюдался «Эффект Бейтмана». Яндекс затрясся от страха и сказал, что не будет отвечать на неполиткорректные вопросы )), ну или как-то так. Бывшую сугубо скриптовую Алису заколбасило )).

 
Alexey Volchanskiy #:

Лень в голове это крутить, y передается по ссылке, это стандартное решение. Насчет ИИ, Вы еще попробуйте YandexGPT, это вообще позор. Я как-то заинтересовался, почему в эксперименте с мышами наблюдался «Эффект Бейтмана». Яндекс затрясся от страха и сказал, что не будет отвечать на неполиткорректные вопросы )), ну или как-то так. Бывшую сугубо скриптовую Алису заколбасило )).

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