LINUX.ORG.RU

Выбор ЯП для системного программирования.

 ,


2

4

Добрый день, задумался я тут о том чтоб начать учить один из низкоуровневых ЯП для развития и разработки. До этого писал только на Python, но он на роль языка разработки системных инструментов не подходит. Так как тут народ опытный хотел бы узнать что в данный момент лучше начинать учить? Пока выделил следующие ЯП. C,C++,JAVA,RUST.


Ответ на: комментарий от yyk

Да вот точно та-же: донести до тебя оценку твоего поведения. Если бы ты просто сказал «Я знаю» - я бы тут-же отвязался,

Но т.к. я так не сказал, ты продолжал доносить до меня оценку моего поведения с целью «донести до меня оценку моего поведения» :-) Лол :-)

Но тебе же надо было дальше разыгрывать роль укуренного дислектика...

Ну так право на ЛОРе же :-) Лол :-)

Вообще говоря, мне эти смайлики нужны только лишь вместо регистрации, вместо ника :-) Я бы зарегистрировался, но, полагаю, меня быстро забанят :-) Какой смысл регистрироваться, если в тот же день регистрацию аннулируют? :-)

anonymous ()
Ответ на: комментарий от anonymous

Потом я пытался тебе показать, что твои ответы мне - бред.

Причины у тебя могут быть любые, как и способов себя частично деанонимировать - масса. Но именно такой способ иногда (или даже часто, а у кого-то может быть и всегда) приводит к нежеланию докапываться до смысла твоих сообщений. А некоторые еще и агрятся :)

Ладно, завязываю, а то я уже по второму кругу пошёл.

yyk ★★★★★ ()
Ответ на: комментарий от yyk

к нежеланию докапываться до смысла твоих сообщений. А некоторые еще и агрятся

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

anonymous ()
Ответ на: комментарий от anonymous

Нет :-) Просто на ущербанском язычке быстрее не получится :-) Слишком низкоуровневый этот цепепе :-)

Хочешь быстро реализованный и низкоуровневый итератор на С++? Легко - это обычный указатель.

anonymous ()
Ответ на: комментарий от anonymous

Никто, кроме тебя, и ещё пары-тройки тебе подобных не употребляет слово «смайлодаун» :-) Что как бы намекает :-)

Что как бы намекает, что смайлодауну проще вообще не отвечать. И не читать его.

PS: Данное сообщение является исключением из моих же правил.

RazrFalcon ★★★ ()
Ответ на: комментарий от RazrFalcon

Что как бы намекает, что смайлодауну проще вообще не отвечать. И не читать его.

А ещё проще не посещать этот сайт :-) Особенно всяким посредственным программистам :-) Лол :-)

anonymous ()
Ответ на: комментарий от anonymous

Хочешь быстро реализованный и низкоуровневый итератор на С++? Легко - это обычный указатель.

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

anonymous ()
Ответ на: комментарий от anonymous

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

Много кода на С написал, или ты так, чисто теоретически рассуждаешь?

anonymous ()
Ответ на: комментарий от RazrFalcon

PS: Данное сообщение является исключением из моих же правил.

Данное сообщение :-) Лол :-) Кого вообще интересуют твои же собственные правила? :-)

anonymous ()
Ответ на: комментарий от anonymous

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

Но сишникам сия мудрость недоступна.

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

Целый час писал эти итераторы.

Это не итераторы, а указатели на T :-) Работают только если доступно определение T (и, следовательно, его размер), и только для массивов T :-) Лол :-)

Хорош уже навешивать свой сексуальный опыт с ООП на C++.

Ты когда-нибудь видел что такое итератор в цепепе? :-)

anonymous ()
Ответ на: комментарий от anonymous

Про какие из итераторов в C++ ты говоришь?

forward iterator? random-access iterator? bidirectional iterator? input iterator? output iterator?

А так не поверишь - видел я итераторы в C++ и даже писал под свои нужды.

И подскажи название структуры, где может лежать не только T (T *) и где применима идиома итерации.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 2)
Ответ на: комментарий от dzidzitop

forward iterator? random-access iterator? bidirectional iterator? input iterator? output iterator?

Не так :-) input iterator? output iterator? forward iterator? bidirectional iterator? random-access iterator? :-) Вот в какой последовательности надо писать :-)

А так не поверишь - видел я итераторы в C++ и даже писал под свои нужды.

И что, это было так же просто как накорябать «T*, const T*»? :-) Лол :-)

anonymous ()
Ответ на: комментарий от anonymous

Последовательность роли не играет.

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

А сложность написания - реализовать несколько операций, присущих итератору. Всё зависит от самого итератора. Но вообще - рутина. Ничего сложного.

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

И подскажи название структуры, где может лежать не только T (T *) и где применима идиома итерации.

Структура myDataBag — «Мой мешок с данными» :-) Внутренности скрыты от приложения - может быть map, а может быть list :-)

anonymous ()
Ответ на: комментарий от anonymous

и как ты будешь итерироваться по своему мешку на C?

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

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от dzidzitop

и как ты будешь итерироваться по своему мешку на C?

Напишу упрощённую версию итератора в стиле Java :-) Потом напишу:

while (data = next(bag)) {
  foo = (Foo *)data;
  /* ... */
}
:-)

anonymous ()
Ответ на: комментарий от anonymous

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

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

На плюсах будет проще.

Лол :-) На плюсах будет вынос мозга :-) Ну, например, начнутся думки, где определить класс итератора - внутри класса или не внутри класса :-) Потом в цепепе нужно определить 2 итератора - обычный и константный :-) Далее нужно обеспечить совместимость с STL - это те самые 5 typedef, которые раньше были в <iterator>, и которые теперь, ой, ой, ой, deprecated, начиная с цепепе-17 :-) Лол :-)

anonymous ()
Ответ на: комментарий от dzidzitop

Хрень у тебя, а не итератор. Итератор имеет состояние, а твой next() состояния не имеет.

У меня bag - это итератор, который имеет состояние :-) next() это состояние меняет :-)

anonymous ()
Ответ на: комментарий от anonymous

Пока что ты и сишный не осилил показать. А с плюсовым - рутина. И фантазии насчёт того, что нужно константный определять, не стоит возводить в требования. Да и совместимость с STL - по необходимости.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от dzidzitop

Пока что ты и сишный не осилил показать.

Я показал тебе сишный :-) Это ты не осилил распарсить :-)

А с плюсовым - рутина.

Ну да :-) Полчаса на итератор - вот суть цепепе :-) В час по чайной ложке :-)

Да и совместимость с STL - по необходимости.

Ну так STL - это же часть стандарта :-) Не обеспечишь совместимость, скажут, что у тебя говнокод :-)

anonymous ()
Ответ на: комментарий от anonymous

То есть у твоего мешка глобальное состояние (один итератор на всех)? Славные времена сишного говнотворчества с пошареным состоянием типа asctime и ctime живут и здравствуют.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от anonymous

Не обеспечишь совместимость, скажут, что у тебя говнокод :-)

Это я не переживу точно.

Сишную хрень ты будешь писать те же полчаса. Если уж совсем временное поделие, то, может быть, на десять минут меньше.

И при этом будешь иметь код, в который T * уже не запихнёшь.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от dzidzitop

То есть у твоего мешка глобальное состояние? Славные времена сишного говнотворчества с пошареным состоянием типа asctime и ctime живут и здравствуют.

Нет :-) Это просто после цепепе трудно понять такой тупой контекст элементарнейшего кода:

void f(myDataBag *b)
{
  void *data;
  Foo *foo;
  BagIter *bag = begin(b);
  while (data = next(bag)) {
    foo = (Foo *)data;
    /* ... */
  }
  /* ... */
}
Не знаю, может быть так до тебя лучше дойдёт? :-)

anonymous ()
Ответ на: комментарий от anonymous

Ну видишь, появилась структурка BagIter, появилась возня с аллокацией памяти, появилась пачка функций begin/next, появилась необходимость всю эту хрень как-то описать.

Шило на мыло.

Но на плюсах фукнций будет больше - operator=, префиксный и суффиксный operator++, operator *. Тут не поспоришь.

Правда с тем, насколько что получится проще - вопрос.

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

Правда с тем, насколько что получится проще - вопрос.

Раза в 2 быстрее :-) Ну и ответь мне на вопрос, если не трудно, как ты определяешь итераторы в цепепе - как классы-члены или как внешние классы? :-)

anonymous ()
Ответ на: комментарий от anonymous

Да хоть на все полчаса быстрее. Использовать потом твой мешок будут через боль и проклятия, копи-пастя код для массивов и ещё возясь с тем, чтобы твои итераторы не потекли. Ноша поддерживать это значительно больше по сравнению с итератором с унифицированным интерфейсом и набором утилит, которые заработают с ним сразу же в плюсах.

Вероятно, через внешний (friend) class мне проще всего это сделать. Но если сама структура сильно завязана на использование этих итераторов - то по ситуации.

dzidzitop ★★ ()
Ответ на: комментарий от dzidzitop

Использовать потом твой мешок будут через боль и проклятия, копи-пастя код для массивов и ещё возясь с тем, чтобы твои итераторы не потекли.

А в цепепе не надо копи-пастить итерационный код через боль? :-)

и ещё возясь с тем, чтобы твои итераторы не потекли.

Вызывай BagIter_free() и не потекут :-) Лол :-)

anonymous ()
Ответ на: комментарий от dzidzitop

В цпп ты можешь и не догадываться, вызывая *i++, что это тип i - это BagIter.

В смысле написать код вида:

for (...) {
  auto oops = *i++;
}
и на этом прекратить работу? :-) Ну да, тут нет утечек, не надо знать что такое typename decltype (i)::reference, всё автоматически - т.е. ничего :-) Лол :-)

anonymous ()
Ответ на: комментарий от anonymous

auto тут - на помойку.

А какой-нибудь int oops = *i++ прекрасно работает. Ну или в случае с мешком чудес - будет каст. Ни о каких ::reference, ::value_type и прочей дребедени думать не нужно.

Разве что включать мозги нужно и вставлять & в нужные места не забывать.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от dzidzitop

auto тут - на помойку.
А какой-нибудь int oops = *i++ прекрасно работает.
Ну или в случае с мешком чудес - будет каст.
Ни о каких ::reference, ::value_type и прочей дребедени думать не нужно.
Разве что включать мозги нужно

Тогда вопрос - зачем после всех этих суждений тебе нужен цепепе? :-) Я не понимаю :-)

anonymous ()
Ответ на: комментарий от anonymous

Мне C++ позволяет создавать инструменты, которые помогают (а не мешают) писать пользовательский код. Си таким качеством не обладает.

Гемора и проблем хватает, в том числе и родом прямиком из няшной сишечки. Но они уж точно не связаны с итераторами.

Ну и там где нужно (важно), использую всю эту хрень с кучей объявленных типов. Но чушь типа std::vector<T>::size_type, который всегда синоним std::size_t, меня использовать никто не заставляет - я и не использую.

C++ - говно. Но всё остальное ещё хуже.

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от dzidzitop

Мне C++ позволяет создавать инструменты, которые помогают (а не мешают) писать пользовательский код.

Т.е. ты либы, которые не для локалхоста, не пишешь? :-)

C++ - говно. Но всё остальное ещё хуже.

Нет ничего хуже цепепе :-) Для того же пользовательского кода Java лучше :-) Не надо долбиться со всякими пимплами и прочими ODR :-) И IDE есть классные :-)

anonymous ()