LINUX.ORG.RU

Про Дурова, но не скандал. Это вообще нормально так писать на Си?

 , ,


4

9

Про Дурова, но не скандал. Чтобы слить наработки ВК в Телеграм, они выложили их в опенсорц. Идем читать исходник и первый же файл - 5 тысяч строк. Какие всё-таки крестовики упоротые. И это тут же привело к чудным названиям в виде adjust_message0 и process_message1, типа интерфейсы :) Ну довели бы идею до конца, вообще бы в один файл всё напихали, длиной триллион строк.

Ну и вообще посмотрите, что там внутри, божечки-кошечки.

assert (E->a == 0x504d4554 && s == 24);

без комментариев, без ничего. Поднимите руки все, кто по виду числа 0x504d4554 понимает, что это такое. А циклы... циклы... циклы!

Или может, это нормально, просто мы анскильные?

Ссылка для просмотра: https://github.com/vk-com/kphp-kdb/blob/master/text/text-index.c

★★★★☆

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

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

stevejobs ★★★★☆
() автор топика

без комментариев, без ничего

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

по виду числа 0x504d4554 понимает, что это такое

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

А циклы... циклы... циклы!

Карма такая у этих ребят, вынуждены писать на ЯП с циклами. Вот и используют фичу как угодно, рубят хардкор.

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

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

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

объявлять переменные за 20 строк до использования

Разве в C89 можно по-другому?

Я на плюсах пишу 24/7, но любой сишный код для меня абсолютно нечитаемый.

Типа:

*((int *) dyn_cur) = *extra++;

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

Разве в C89 можно по-другому?

ЕМНИП, в c89 можно объявлять переменные в начале блоков. Т.е. вместо:

void f() {
  int a, b, c, d, e;
  ...
  if(something) {
    d = 0; // The first use.
    ...
  }
  ... // d is no more used.
}
можно было делать так:
void f() {
  int a, b, c;
  ...
  if(something) {
    int d = 0;
    ...
  }
  ...
}

Ну а в коде от Телеграмма к тому же вообще не c89, а что-то более новое, как минимум c99.

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

Я думал только в начале функции. В сишке не силён.

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

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

И все, как принято, не инициализированные, что просто тихий ужас.

И ещё и не константные :-) Вот ведь кошмар то какой :-)

Типичное нытьё си-флюс-флюс кодера :-) Лол :-)

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

Я на плюсах пишу 24/7, но любой сишный код для меня абсолютно нечитаемый.

Трогательное признание в собственной неспособности читать сишный код :-) Лол :-)

anonymous
()

Или может, это нормально, просто мы анскильные?

Просто Телеграммом пользуются миллионы, а создатель - богатый и успешный разработчик :-) Так что делай выводы сам :-)

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

Если разработчики Дурова патчат Qt, чтобы он правильно работал с Telegram'ом, то мейнтейнеры дистров патчат обратно Telegram, чтобы он правильно работал с системным Qt.

Круговорот костылей в природе.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

Вообще, такое впечатление, что комментарии из кода были удалены.

shkolnick-kun ★★★★★
()

Жобс, ну при чем тут с++

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

Говнокод порождают дебилы из мяса.

Этот жоподуров в свое время, когда создавал телеграм, объявил конкурс на «TL-протокол». Надо было создать его парсер. Описание протокола это просто мрак. Это даже не описание а фонтан шизофрении какой-то. Бессвязный текст, перемежаемый какими то шифрограммами (типа пример сообщения) которые хз как понимать ибо они якобы сами себя объясняли.

Неудивительно что они такой трэш пишут, когда в головах такая параша

Не гугля вангую что у дурова бомбит от c++ .

ckotinko ☆☆☆
()
Ответ на: комментарий от EXL

Справедливости ради с 5.0 до 5.9 qt крэшился очень даже бодро изза use after free

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

Смайлофаг, зарегистрируйся, у меня тогда хотя бы один игнор будет.

И ещё и не константные :-) Вот ведь кошмар то какой :-)
Типичное нытьё си-флюс-флюс кодера :-) Лол :-)

Я не понял, ты обос раскритиковал функциональщиков или цепепешников?

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

Experimental build of Telegram Desktop (using system Qt)

tdesktop.patch
libtgvoip.patch

Что сказать-то хотел?

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

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

anonymous
()

Идем читать исходник и первый же файл - 5 тысяч строк. Какие всё-таки крестовики упоротые.

При чем тут плюсы? Там говнокод на си.

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

использовать однобуквенные идентификаторы

Длина идентификатора влияет на длину «кодопредложения», что в свою очередь не всегда наилучшим образом сказывается на читаемости.

for (i = 1, max = a[0]; i < k; i++)
  if (a[i] > max)
    max = a[i]
vs
for (array_index = 1, maximum_element = array[0]; array_index < array_items; array_index++)
  if (array[array_index] > maximum_element)
    maximum_element = array[array_index];

объявлять переменные за 20 строк до использования

Считаю дурным тоном раскидывать объявления переменных по потрохам блоков. В C++ это вынужденная мера из-за конструкторов присваивания, несущих побочные эффекты. В C все объявления строго в начале блока.

Это типичный код математиков-олимпиадников. У них мозгов столько, что в продобном коде они ни проблем, ни сложностей не видят

Дело не в мозгах. Олимпиадники пишут, как правило, один раз. Задачи понять написанное спустя несколько лет у них нет.

kawaii_neko ★★★★
()

Ты прям как вчера родился.

Deleted
()
Ответ на: комментарий от shkolnick-kun

Что у них за конпелятор в котором так можно?

эм. ну как бе gcc. clang вроде тоже уже такое умеет.

anonymous
()

Да, нормально. Иногда возникает ощущение, что половина сишников - тупые макаки, которые не могут осилить никакой другой язык, но из осознания собственной ущербности идут на форумы (в том числе этот) орать, что они - тру, а все остальные - тупые анскилы. Честно, мне уже стыдно писать на С.

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

Длина идентификатора влияет на длину «кодопредложения», что в свою очередь не всегда наилучшим образом сказывается на читаемости.

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

void tmp_flush_out (struct buff_file *T) {
  int b = T->wptr - T->wst;
  if (!b) {
    T->wptr = T->wst;
    return;
  }
  assert (b > 0 && b <= TEMP_WRITE_BUFFER_SIZE);
  int a = write (T->fd, T->wst, b);
  if (a < b) {
    if (a >= 0) {
      int c = write (T->fd, T->wst + a, b - a);
      a = (c >= 0 ? a + c : c);
    }
  }
он от использования имен a, b и c прям выиграл-выиграл. Как и от имен wst и wptr. Все лаконично и понятно с первого взгляда. Правда ведь?

Считаю дурным тоном раскидывать объявления переменных по потрохам блоков

Тогда Дурову и Ко мозги компостируйте, пожалуйста, а то они что-то не по вашим заветам код пишут: вот декларация, вот первое использование.

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

А почему не так? Зачем бросаться из крайности в крайность?

for (i = 1, max_value = array[0]; i < array_size; i++)
  if (array[i] > max_value)
    max_value = array[i]
anonymous
()
Ответ на: комментарий от eao197

пожалуйста, а то они что-то не по вашим заветам код пишут

А ты бы так хотел, чтобы они писали по твоим заветам код :-) Но увы :-) Лол :-)

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

А почему не так? Зачем бросаться из крайности в крайность?

потому что он код не читает, он его пишет

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

Обычная сишка. Она вся так выглядит

а как выглядит раст? :-) как цепепе? :-) или как Go? :-)

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

Да, если он прикидывается «нативным».

а ты кем прикидываешься? :-) академиком? :-)

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

он от использования имен a, b и c прям выиграл-выиграл

они одной буквой ваш язык назвали :-) и выиграли-выиграли? :-)

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

Обычная сишка. Она вся так выглядит.

Сишка - может быть, а си способен выглядеть по-человечески.

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

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

Угу.

Когда писал свой первый коммерческий проект, я вылизывал код так, как шелудивый пёс выкусывает вшей из своей тощей задницы. Думал по наивности, что заказчик, как и положено «по науке», соберёт комиссию высоколобых спешалистофф и те будут сканировать каждый байт. Фигня полная! Во-первых, настоящих высоколобых не так уж и много, и им никакого дела нет до внедренческих потуг своего начальства, во-вторых, всем всё пофиг, что не касается их лично.

Работает? И нормально.

Протекает память? Накинем ещё пару гиг.

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

Тупо пофиг!

А удобная молчаливая шея для мучений с эксплуатацией софтины отыщется сама собой.

Любой продукт мелкософта, я больше чем уверен, - это перловая каша с макаронами в километр длиной.

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

Когда писал свой первый коммерческий проект, я вылизывал код так, как шелудивый пёс выкусывает вшей из своей тощей задницы

...

Протекает память? Накинем ещё пару гиг.Собсна, этот «честный» подход использую и теперь, так научили, но уже не мандражирую, как раньше

начинал как профессионал, закончил как обычное php-быдло) впрочем, не осуждаю, каждый из нас сам делает выбор который ему ближе

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

начинал как профессионал, закончил как обычное php-быдло) впрочем, не осуждаю, каждый из нас сам делает выбор который ему ближе

Не мы такие :-) Жизнь такая :-)

Хотели бизнес? - Пожалуйста :-) Хотели быстрее? :-) - Пожалуйста :-) Лол :-)

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

Хотели бизнес? - Пожалуйста :-) Хотели быстрее? :-) - Пожалуйста :-) Лол :-)

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

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

очень просто валить свою криворукость на заказчиков, хотя чаще всего это обыкновенная лень.

Ещё проще требовать много и по-быстрее :-) И по-дешевле :-) «Ну и потом все удивляются что нормальных программистов по пальцам пересчитать» :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.