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

★★★★☆

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

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

в твоем быдлокоде виноваты все кроме тебя) это я уже понял)

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

И по-дешевле :-)

А то и вовсе бесплатно :-) Ибо ну что за софт такой, если он платный? :-) Это же тебе не табуретка какая, а софт :-) Эка невидаль :-)

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

в твоем быдлокоде виноваты все кроме тебя) это я уже понял)

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

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

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

фиговый пример, array и array_items ровно так же бестолковы, как и a с k. Для читаемости нужен контекст:

for (i = 1, max_thickness = thicknesses[0]; 
    i < part_count; 
    i++)
  if (thicknesses[i] > max_thickness)
    max_thickness = thicknesses[i]

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

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

Я всем сердцем люблю короткие названия. Поэтому считаю нормальным сокращать «current_pointer» до «cptr» или даже «cp» и считаю первый вариант с «array => a», «array_index => i», «array_size => k» наиболее читаемым.

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

у тебя просто мозг травмирован сишкой

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

Ошибся ты, браток, пых-пых не знаю. Подрабатываю на икорочку к хлебушку банальнейшими сями с банальнейших ассемблером напополам с банальнейшими СУБД.

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

Я всем сердцем люблю короткие названия. Поэтому считаю нормальным сокращать «current_pointer» до «cptr» или даже «cp» и считаю первый вариант с «array => a», «array_index => i»,

current_pointer еще можно сократить до c

«array_size => k» наиболее читаемым.

почему именно k? обозначение размера как «_» добавит читабельности и сделает код компактным еще и в высоту

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

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

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

Все лаконично и понятно с первого взгляда

Я уже высказался на тему этих поделок. Это вырвиглазное порождение олимпиадников является наглядной иллюстрацией «как не надо писать код». Если бы там были кресты, все было бы на пару порядков печальней. А так ребята просто обсираются на ровном месте: не знают ни о FILE* + setvbuf, ни о том, как правильно делать write, ни даже о isxdigit/isdigit/etc. Зато впендюрили хеш-таблицу и закатывают солнце вручную.

Ну а что еще можно ожидать от php-related проекта?

Тогда Дурову и Ко мозги компостируйте

Дурову насрать, что там творится в коде. А судя по тому, что там творится, в такой же степени насрать тамошним джунам, мидлам, синьорам, тимлидам и пм. Так почему мне должно быть не все равно, что творится в какой-то питерской конторе?

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

Чем короче идентификаторы, тем быстрее программа выполняется

вместо этого все давно огонь наклеивают на системник, эффект ускорения программ больше)

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

current_pointer еще можно сократить до c

Можно сокращать до p, s, d, но до c нежелательно.

почему именно k?

А чтоб никто не догадался!

обозначение размера как «_» добавит читабельности и сделает код компактным еще и в высоту

Любители использовать times new roman при редактировании кода подтянулись?

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

Дурову насрать, что там творится в коде.

Речь про Николая Дурова, старшего брата Павла Дурова, основателя ВКонтакте и Телеграмма. Николай Дуров у них вроде как один из основных технических специалистов и разработчиков.

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

Для читаемости нужен контекст

Не нужен, когда речь идет об абстрактных алгоритмах. А для контекста тебе даны совершенно чумовые инструменты:

/* find min/max thickness */
mn = mx = a[0];
for (i = 1; i < n; i++) {
  if (a[i] > mx) mx = a[i];
  if (a[i] < mn) mn = a[i];
}

for-в-три-строки

Такими темпами тебе понадобится транспонированный 2.35:1 монитор.

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

Надо ввести должность «обфускатор программного кода».

Уже есть. Обычно это все junior developer-ы всех мастей и senior c++ developer-ы, потому что «конпелятор все стерпит, а я покажу всем, как умею».

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

Уже есть. Обычно это все junior developer-ы всех мастей и senior c++ developer-ы, потому что «конпелятор все стерпит, а я покажу всем, как умею».

так ты senior c++ или junior?)

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

Речь про Николая Дурова, старшего брата Павла Дурова

В сортах Дуровых не разбираюсь.

Николай Дуров у них вроде как один из основных технических специалистов и разработчиков

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

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

Тогда к вам такой же вопрос, как и к Стиви: а ваш код где-нибудь в OpenSource есть? Ну дабы припасть и поучиться уму-разуму?

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

обозначение размера как «_» добавит читабельности и сделает код компактным еще и в высоту

А что? Отличная идея.

#include <stdio.h>

#define _____ main
#define _ char
#define __ int

#define ______ return
#define _______ 0
#define ________ printf
#define _________ "Hello, World!\n"

__ _____(__ ___, _**____)
{
 ________(_________);
 ______ _______;
}
aureliano15 ★★
()
Ответ на: комментарий от tcler

неужто это

Ну да. Высрать никому не нужный $petprojectname может каждый. А законтрибуть что-то полезное в софт, котрым сам пользуешься уже сложнее. Над будет занести вторую часть с click-to-nick...

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

А потом мне рассказывают, что сишка норм.

да, норм только раст, но тут тема про Дуровых и kphp

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

А потом мне рассказывают, что сишка норм.

Держи std::map<std::string, std::string>::map():

_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEEC1Ev
И эти люди еще что-то кукарекают о сишке.

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

А потом мне рассказывают, что сишка норм.

Да ладно, нормальный код в C для интеропа между кусками приложения.

А вот это уже творение самого kawaii_neko:

ret_val = ((gboolean (*)(void *, gboolean, void *))cb)(arg1, arg2, data);

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

А вот это уже творение самого kawaii_neko:

Ну да, ret_val я бы сейчас до r сократил. Что поделать — был молод и горяч словоблудлив.

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

Ну, я бы делал как-то так:

gboolean (*actual_cb)(void*, gboolean, void*) = cb;
int ret_val = actual_cb(arg1, arg2, data);
и не ломал бы глаза высчитывая скобочки.

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

ты для себя name mangling только что открыл?

Нет. Но большинство «сиплюсплюс разработчиков» об этом не в курсе, но кукарекнуть хотят.

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

лишь бы typedef не использовать

Зачем мне typedef для одноразовой штуки?

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

Так и запишем: говнокод в жабе с 10к+ строк в одном классе живёт десятилетиями, а энтепрайз-распальцованные сеньор архитекторы при этом в восторге.

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

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

Людей, которые вообще помнят, что такое AWT, можно по пальцам пересчитать. Файл от этого не исчезнет. С шансами этот файл переживет нас с тобой, его увидят наши пра-пра-правнуки :)

Совместимость - это хорошо. Ты можешь взять сотфину, написанную на в 1998 году, и шансы очень велики, что она продолжит отлично работать. Да, без исходников, прямо бинарник.

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

Людей, которые вообще помнят, что такое AWT, можно по пальцам пересчитать.

ого, я один из 10, если ты не слесарь

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

Обычно, половина Си кода - это натягивание туда идиомы наследования и виртуальных функций, половина от половины - попытки обойтись без RAII для мутексов, памяти и других дескрипторов; еще половина от оставшегося- макросы для очередей и других хешей и списков, а может это быть и без макросов размазано.

И остается там сотня строчек с зубодробительными хаками UB чистой логики.

Так что, немудрено

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

Стоит ткнуть жабамакаку в каку, как она резко начинает переобуваться. 10к++ в ябке уже можно, когда обратная совместимость и никто не использует.

А этим, этим и этим тоже махровое легаси?

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