Easyelectronics.ru

Электроника для всех
Текущее время: 23 авг 2019, 01:23

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



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

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

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2287
Откуда: Китай, Пекин
завершил я значит кодогенерацию 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
Сообщения: 6024
Извините, поддержу - с++ в топку!


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

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 988
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
Сообщения: 2287
Откуда: Китай, Пекин
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
Сообщения: 2287
Откуда: Китай, Пекин
на самом деле от предложенного выхода возникло ещё больше риторических вопросов
почему я на С++ не могу просто, как в 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
Сообщения: 619
Откуда: GMT+6
Скорее это наследственность. Раньше компиляторы были однопроходные и при использовании нового типа/переменной/функции они не искали их объявление где-то в дебрях не пройденного кода, а могли использовать только то, что было уже известно.


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

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

_________________
unirail.org


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

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

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


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

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

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

_________________
unirail.org


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

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


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

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

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


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

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


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

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

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

_________________
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
Сообщения: 3877
Откуда: КЧР, поселок Нижний Архыз
pfgx, неча на язык пенять, коли руки из задницы растут!
Насчет ассемблера - на нем слишком объемный код получается, вот и не пишут на нем все, что попало!
С точки зрения оптимума между объемом кода и легкостью программирования С является наилучшим языком. В крестах, скажем, объем кода будет меньше, однако, придется значительно дольше этот код писать! А на каком-нибудь педеrustе или пхытоне вообще нереально что-нибудь юзабельное делать!!!


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

Зарегистрирован: 02 май 2015, 16:16
Сообщения: 1991
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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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