Easyelectronics.ru

Электроника для всех
Текущее время: 18 окт 2019, 19:10

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 03 май 2019, 19:50 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
завершил я значит кодогенерацию BlackBox для Rust всё работает просто изумительно.

и решил, а почему бы мне не "тряхнуть стариной" и не сделать кодогенератор для С++ ...
давно... очень давно на плюсах не писал .
ну удивление быстро всё вспомнил и всё пошло довольно бодренько.

и вот случилось реальное фиаско братан.
какой убогий компилятор у плюсов это что-то
данный код скомпилировать невозможно ни при каких условиях
Код:
class A;
class B;

class B {
  A test() {
    A a;
    return a;
  }
};

class A {
  B test() {
    B b;
    return b;
  }
};

ошибка
Код:
error: aggregate 'A a' has incomplete type and cannot be defined
   A a;
     ^

причём я не из носа выковыриваю все эти конструкции, это реальные потребности предметной области в таком коде.


аналогичная конструкция на Rust
Код:
struct A {}

impl A {
    fn test() -> B {
        let b = B {};
        return b;
    }
}


struct B {}

impl B {
    fn test() -> A {
        let a = A {};
        return a;
    }
}


прекрасно компилируется и работает.

короче.
с++ в топку!

_________________
unirail.org


Последний раз редактировалось cheblin 03 май 2019, 19:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 03 май 2019, 19:53 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6218
Извините, поддержу - с++ в топку!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 03 май 2019, 19:59 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1016
cheblin писал(а):
с++ в топку!

Код:
class A;

class B
{
   A test();
};

class A
{
   B test()
   {
      B b;
      return b;
   }
};

A B::test()
{
   A a;
   return a;
}

На С тоже можно запихнуть в пару хедеров вместо объявлений функций их определения и если внутри будут ссылки друг на друга, то получим похожую циклическую зависимость...


Последний раз редактировалось Reflector 03 май 2019, 20:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 03 май 2019, 20:15 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
Reflector писал(а):
cheblin писал(а):
с++ в топку!

Код:
class A;

class B
{
   A test();
};

class A
{
   B test()
   {
      B b;
      return b;
   }
};

A B::test()
{
   A a;
   return a;
}


йоу! спасибо. годнота.

пусть ++ пока поживёт. а то на 50% уже сделал не хочется выкидывать.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 07:34 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
на самом деле от предложенного выхода возникло ещё больше риторических вопросов
почему я на С++ не могу просто, как в Rust, написать
Код:
class B {
  A test() {
    A a;
    return a;
  }
};

class A {
  B test() {
    B b;
    return b;
  }
};


нафига мне в исходниках весь этот мусор ручного предобъявления классов и обязательность разнесения имплементации. почему компилятор обнаружив такое сам не в состоянии сделать то - что приходится делать вручную

а я скажу почему - это всё от того, что С++ компилятор смотрит на своих программистов как на говно.

С++ 98 ...11...17...20

уже эпоха сменилась, лямбды добавили... а отношение всё тоже.

стабильность!

спасибо компилятору Rust - ты заботишься о нас

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 08:47 
Старожил
Аватара пользователя

Зарегистрирован: 11 авг 2016, 20:52
Сообщения: 634
Откуда: GMT+6
Скорее это наследственность. Раньше компиляторы были однопроходные и при использовании нового типа/переменной/функции они не искали их объявление где-то в дебрях не пройденного кода, а могли использовать только то, что было уже известно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 10:02 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
я уже говорил что С++ компилятор смотрит на своих программистов как на говно?
даже java себе такого не позволяет.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 13:38 
Заглядывает иногда

Зарегистрирован: 15 ноя 2015, 12:11
Сообщения: 173
cheblin писал(а):
я уже говорил что С++ компилятор смотрит на своих программистов как на говно

Имея такую долю рынка - можно себе позволить не только на своих, но и на чужих да и вообще на весь мир смотреть как на это самое. :-D
-"Папа Римский? А сколько у него дивизий?"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 13:47 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
всё так.
и до появления Rust это набутыливание вынужденно приходилось терпеть...

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

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 14:02 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Лучше уж сначала rust в топку! А потом уже и кресты.
Но полностью согласен: С хватает абсолютно на все случаи жизни. Нет ничего такого, чего нельзя было бы написать на С!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 14:22 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4097
Откуда: г. Липецк
Eddy_Em писал(а):
...Нет ничего такого, чего нельзя было бы написать на С!

Хе-хе, нет ничего такого, чего нельзя было бы написать без С. Вы в курсе на чем работают PLC? С там и не пахнет. Имхо, не удержался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 15:27 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Да плевать мне на плисины и ПЛК. Так как их на нормальном ЯП нельзя программировать, я с ними и не имею никаких дел!
А насчет "нет ничего такого, чего нельзя было бы написать без С" совершенно не согласен! Есть уйма вещей, которые без С написать либо невозможно (ядра операционных систем, например), либо слишком сложно (микроконтроллеры и т.п. низкоуровневщина).
С хорош своей низкоуровневостью и универсальностью. Благодаря низкоуровневости можно писать хоть операционные системы, хоть прошивки МК; а благордаря универсальности можно и веб-приложения на нем писать, и числодробилки, и вообще что угодно (собственно, я абсолютно все, что мне нужно, именно на С и пишу)!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 16:27 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2411
Откуда: Китай, Пекин
так и на ассемблере можно также всё что угодно написать, и будет эффективнее любых сишечек.
вывод: сишечка не нужна!

только вот отчего-то на асме, ничего кроме вставок в критических местах, по большом счёту, не пишут.
интересно почему. загадка природы!

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 17:22 
Заглядывает иногда

Зарегистрирован: 16 сен 2018, 10:41
Сообщения: 124
cheblin писал(а):
так и на ассемблере можно также всё что угодно написать
Так и на Паскале можно.
Простите, не удержался :)
cheblin писал(а):
вывод: сишечка не нужна!
А вот тут согласен. Странный язык, на котором программист не выражает мысль, указывая компилятору что и как сделать, а пытается обойти запреты и undefined behavior, периодически натыкаясь на новые.
Одна только система базовых типов этого языка уже вызвала стойкое удивление, а сколько там сверху на него наворотили...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 17:55 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
pfgx, неча на язык пенять, коли руки из задницы растут!
Насчет ассемблера - на нем слишком объемный код получается, вот и не пишут на нем все, что попало!
С точки зрения оптимума между объемом кода и легкостью программирования С является наилучшим языком. В крестах, скажем, объем кода будет меньше, однако, придется значительно дольше этот код писать! А на каком-нибудь педеrustе или пхытоне вообще нереально что-нибудь юзабельное делать!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Очередная сишечка... на этот раз ++
СообщениеДобавлено: 04 май 2019, 18:01 
Старожил

Зарегистрирован: 02 май 2015, 16:16
Сообщения: 2018
Eddy_Em писал(а):
pfgx, неча на язык пенять, коли руки из задницы растут!
Насчет ассемблера - на нем слишком объемный код получается, вот и не пишут на нем все, что попало!
С точки зрения оптимума между объемом кода и легкостью программирования С является наилучшим языком. В крестах, скажем, объем кода будет меньше, однако, придется значительно дольше этот код писать! А на каком-нибудь педеrustе или пхытоне вообще нереально что-нибудь юзабельное делать!!!
посмотрел твоё видео... ты с первого раза даже rename в строку ввода не можешь вбить без ошибок https://www.youtube.com/watch?v=swmPPi0nI_U
Изображение
смысл доказывать всем юзабельность клавы по сравнению с мышью и сенсорным экраном, когда почти у ВСЕХ есть мыши и мобильники без кнопок ?

Цитата:
данный код скомпилировать невозможно ни при каких условиях
Код:
class A;
class B;

class B {
  A test() {
    A a;
    return a;
  }
};

class A {
  B test() {
    B b;
    return b;
  }
};

напомнило
Код:
class A{
«СЕПУЛЬКИ — важный элемент цивилизации ардритов (см.) с планеты Энтеропия (см.).
           См. СЕПУЛЬКАРИИ».}

//Я последовал этому совету и прочёл:
class B {
         «СЕПУЛЬКАРИИ — устройства для сепуления (см.)».};

//Я поискал «Сепуление»; там значилось:
class С {
         «СЕПУЛЕНИЕ — занятие ардритов (см.) с планеты Энтеропия (см.).
                      См. СЕПУЛЬКИ». };


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: 45893569365


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB