Оптимизация / программирование :: it

it программирование 

Оптимизация

if(wage > 50	)
return true;
else
return false;
return wage > true : false;
return wage >,it,программирование
Подробнее
if(wage > 50 ) return true; else return false; return wage > true : false; return wage >
it,программирование
Еще на тему
Развернуть

Отличный комментарий!

Drozd13 Drozd1323.07.201719:44ссылка
+41.8
Тем не менее, компилятор , по идее, автоматически должен свести вариант из первого фрейма к третьему.
если речь о переменных - сведет. если в деле участвуют возвращаемые функциями значения (скажем: if (do_smth(a) > 0) return true; else return false;) - то хрен он что упростит.
Apteko Apteko 23.07.201719:42 ответить ссылка 2.1
return do_smth(a) > 0;
Или для нуля даже

return do_smth(a);
return do_smth(will(smth(smth(will))))?
clang и g++ упростили до callq do_smth; test %eax,%eax; setg %al. Джампа нет.
phlush phlush 24.07.201721:44 ответить ссылка 0.1
Убирает избыточные конструкции(оптимизация) и преобразует код в машинный.
Это и есть оптимизация
т.е. ты хочешь сказать что компилятор сначала меняет исходный код, преобразовывая одни конструкции в другие и только потом переводит это в машинный код?
iduno iduno 24.07.201708:30 ответить ссылка -4.6
если еще точнее, то после того, как препроцессор развернул все макросы и прочую хрень, компилятор парсит код на блоки, выстраивает из них дерево, проводит оптимизацию внутри блоков, проводит оптимизацию между блоками... еще где-то по ходу этих действий проверяется семантика на ошибки... потом генерится машинный код... потом он еще раз оптимизируется с учетом конкретной системы...
Apteko Apteko 24.07.201710:03 ответить ссылка 3.1
я все же подозреваю, что человек имел в виду, что не каждый компилятор умеет в оптимизацию.
Wolfdp Wolfdp 24.07.201721:26 ответить ссылка -1.6
человек имел ввиду что его собеседник унтерменьш. А в качестве доказательства своего превосходства пытается похваляться своим начальным уровнем знаний.
Хз. С одной стороны, вроде да -- компилятор проводит оптимизацию, и даже в книжках пишут что это один из этапов компиляции. С другой, когда начинаешь разгребать его работу, понимаешь что "оптимизация" скорее дополнительная фича, что "меньше кода" не означает "быстрее", а порой генерится нечно неочевидное.
Wolfdp Wolfdp 24.07.201722:52 ответить ссылка 0.0
Формально компилятором называется только программа которая занимается компиляцией, и оптимизация в ней происходит только как побочный эффект. Но в современных языках высокого уровня редко достаточно одной компиляции и в процессе сборки (build) компиляция является лишь одним из нескольких этапов, среди которых обычно есть и оптимизация и проверка синтаксиса и ещё много чего. Однако программисты (по крайней мере русскоговорящие) для простоты зачастую называют весь процесс сборки - компиляцией. А iduno, похоже, знает только определение компилятора и отталкивается от него
не то чтобы в школе(да даже универе) врут, просто упрощают.
Как написал чувак выше - при использовании первого варианта в будущем можно лапши напихать. Особенно полезно для тех, чье начальство требует показывать код, при этом нихуя не понимая что там написано (но чем больше - тем лучше, как принято считать)
такие ещё существуют?
Да
Часто
Много где
IT в том или ином виде есть в любой чебуречной или шаурмячной, что говорить о более-менее крупных фирмах. И иногда (особенно в заведениях, где IT составляющая не основная) там такие дятлы сидят, что хоть стой хоть падай
D4_Art D4_Art 23.07.201721:48 ответить ссылка 0.7
меня недавно завернули с изменением функции преобразующей текст с помощью Copy кусков текста на работу с этим текстом через указатель, мол другие не поймут, блин если ты не умеешь работать с указателем хули тебе вообще в код лесть
CriMsoN CriMsoN 23.07.201722:47 ответить ссылка -1.8
если ты не умеешь в русский язык, то зачем вообще писать?
ну извините
Кстати, всегда было загадкой для меня, почему частенько прогеры пишут обычный текст с ошибками, зато в коде всё четко, ни одной ; не пропустят.
dstwo dstwo 26.07.201710:56 ответить ссылка 0.0
Вот только там ошибок десятки и при компиляции часть вылезают, затем программист втыкает костыли и после этого ошибки либо исчезают, либо их становится больше.
Kentoval Kentoval 13.01.201819:00 ответить ссылка -0.3
Бывают автоматические анализаторы, которые проверяют код на соответствие каким-то правилам. Например, я видел, как такой анализатор тернарный операнд считает усложнением читабельности и требует развернуть его в if-else конструкцию (хотя третий вариант ок). У меня до сих пор бомбит, когда думаю об этом.
Херов в панамку за такое надо напихать. Если есть такая функция, то пихается все в месте ее вызова, а не внутри. А то потом кто-то будет очень удивлять, почему 50% времени исполняется функция IsOver5000, а туда напихали, оптимизаторы.
gybson gybson 24.07.201709:14 ответить ссылка 0.0
ну тут такое... смотря что с чем сравнивать, я наоборот с удовольствием показываю максимально сокращенный код или верстку html, объясняя клиентам, что мол код оптимизировал, минимализировал и типа он весь такой охуенный для обработки, типа дохуя всего работает,а текста понты, типа это очень пиздато и всё такое, пока никто не жаловался
Я - говнокодер.
Я работаю в маленькой конторе разработчиков, и мой единственный начальник (он же владелец конторы) - программист, и понимает что где написано значительно лучше чем я.
К счастью, контора такая маленькая, и так загружена работой, что пока мой говнокод работает, и делает хотя бы примерно то, что заявлено, никто и не подумает его проверять. А если не работает, все равно не подумают, просто отправят меня лепить на это пластырь пока не запашет.
Правда, поправьте если я не прав, в примере выше, с точки зрения компилятора написана разве не одна и та же хуйня? По крайней мере в первых двух случаях
Morhem Morhem 24.07.201723:51 ответить ссылка 0.4
Херня код. Если это тупо проверка больше/меньше, то нах она в функцию вынесена, а если там охрененный расчёт веса, то почему расчитанное значение не возвращает - может в будущем понадобиться. Короче не продумана стратегия алгоритма.
Как человек закончивший минимум 3 курса ФКТ говноунивера на Амуре смело заявляю, на первом курсе в лучшем случае расскажут, что есть возможность написать как в первом, на языках программирования, о которых вы услышите на третьем курсе.
Продвинутый у вас универ однако - в моем на первом сказали, что программирование есть, а на третьем геолог по кривой методичке собственного написания учила делфи.
Тем самым сразу проиллюстрировав рекурсию.
в принципе учить с первого варианта нормально, так человеку проще понимать логику кода, что от чего происходит и как работает, а уже потом хай учатся упрощать
Современные джуниоры с запросами в 50к+ рублей дальше первого способа редко заходят. А если и в курсе третьего варианта - то будут яро утверждать что это нечитабельно и что никто не поймет эту строку в будущем.
Yuutsu Yuutsu 23.07.201719:41 ответить ссылка 3.4
Такого джуниора обычно держат месяц, и, если не научится на автомате делать третий вариант со строкой комментария, отправляют куда подальше
Эм, со строкой комментария?
типа, вот так?

return wage > 5000; // вернуть да, если больше 5000
monad monad 23.07.201720:07 ответить ссылка 6.6
Если такое требуют на работе, то он уебывает с этой конторы через 2 недели.
Коммент тут должен объяснить, что это за магические 5000, почему и как они появились. То, что сам код делает и так всем видно. Не умеешь ты коменты писать. Уволен.
selma selma 24.07.201702:14 ответить ссылка 5.3
Не умею, потому что не нужно: такой ситуации никогда не возникло бы. 5000, вероятнее всего, тянулась бы из конфига, и wage сравнивался бы не с непонятной хуйнёй, а с переменной с понятным названием.
monad monad 24.07.201710:52 ответить ссылка 1.0
Ну или на худой конец с константой с понятным названием.
1. Проработал месяц, получил 50к+
2. Уволили, отдыхай пару недель.
3. Ищи новое место работы
4. ...
5. PROFIT // отпуск каждый месяц
dstwo dstwo 26.07.201711:03 ответить ссылка 0.0
Да да50к. Столько по идее Должен зарабатывать средний специалист с высшим образованием. Это в ЕБАНОЙ россии, 10к зп НОРМА и ИДИ НАХУЙ. И проблема не в ЛЮДЯХ, Проблема в системе обучения. Говорю как человек закончивший бакалавриат и магистратуру в айти направлении. НАм в лучшем Случае давали ХОРОШУЮ методичку, в ХУДШЕМ плохую. Вот занимайтесь, если есть вопросы подходите. И только потом выйдя из вуза понял что нихуя не знаю, что чтобы освоить"настоящему ОСВОИТЬ" хоть какой то язык программирования, нужно про решать тонну задачей и примеров. И Мне еще повезло, что меня взяли потом с "базовыми" знаниями на стажировку, в течении которой я обрел реальные знания. А ВЕДЬ большинство - ИДУТ нахуй и вот удел нынешних джуниоров желающих творить код.
В универе тоже ничего не давали, учил программирование еще со школы. В универе узнал меньше, чем в школе, но после спокойной устроился на проггера с зп в 50к
Matew Matew 23.07.201720:45 ответить ссылка -2.1
Я во время обучения шутил, что мол никто не знает каких плохих программистов выпускает мой колледж, потом что никто никогда не работает по специальности. а так вообще зависит от места. У меня пусть и колледж, но программа была более чем адекватная, теории как везде - дрочерство на разные разделы диксретки, азы архитектуры ЭВМ (бесит это сокращение) и дальше по стекам .NET + LAMP, около разработческие штучки по типу как работать с гитом в разных проектах, какие бывают методологии разработки, как решаются типовые задачки, обзоры фреймворков и либ (даже не могу сказать что дико устаревших, так вменяемо), был кружек юных рубистов (он то меня и зацепил). Однако уровень преподавателей это конечно же мрак, 2 человека и то непостоянных из реального сектора, остальные либо какие-то долгожители советские либо вчерашние учителя английского. В любом случае айти это не та сфера где больше решают связи, тут всё-таки нужна голова, образование дает основу, дальше будет пожизненный процесс интенсивного обучения, рассчитывать можно только на себя, начинать работать как можно раньше. Ну и конечно айти понятие слишком растяжимое, в разработке куча разных направлений и разных философий, что можно в стартапе - нельзя в тырпрайзе, а кому что ближе нигде не рассказывают.
Как человек, закончивший бакалавриат и магистратуру в айти направлении в хорошем (пусть и "староватом") вузе, отвечаю - идти на стажировку можно было во время обучения, начиная с курса с третьего (со второго если кто возьмет на 5-6 часов в неделю). В начале стажером на пол-ставки за дошираки пол-года, потом джуном на те же пол-ставки, причем этого хватает на съем комнаты и еду, при этом не проседая в обучении (красный диплом, ага). В итоге через год-полтора после окончания вуза можно вполне успешно найти работу в Европе/Америке если хочется трактор, либо продолжать за крайне комфортные деньги жить в России. Подобным путем пошла где-то треть нашего потока, это не единичные случаи.
Да, объясняют иногда хреново, да, перпод по плюсам не мог объяснить отличие битовых от логических операций, потому что сам их не знал. Но в то же время можно было подогнать то, что ты хочешь делать, под курсовую/дипломную работу, найти преподов, которые готовы подсобить, что как минимум институтская бюрократия не отнимет много времени.
Другое дело что многие "джуны" приходят, и не то что написать, а даже просто на словах объяснить какую-нибудь хеш-таблицу или алгоритм Дейкстры, что фактически надо знать уже на втором курсе даже без активного самообучения. И что еще печальнее - не могут в этом разобраться. Пока ты джун - у тебя google-driven-development, но если ты не можешь загуглить, понять и быстро воплотить решение задачи - то зачем такой джун нужен? Все что надо для собеседования - потратить один день и нагуглить всякие стандартные вещи вроде виртуальных деструкторов и наследования, в идеале какой-нибудь проект который можно показать (бота для телеграма напиши например, лол).
Единственный большой камень, который мне повезло миновать - изначальное нахождение в большом городе. Найти работу в не-милионниках подозреваю гораздо сложнее. Но там можно удариться во фриланс (что тоже не требует каких либо экстраординарных скиллов), плюс как минимум решение лаб для не-профильников если что-то не сложилось, а деньги нужны (есть группа в 15 человек, есть лаба с разными "вариантами" отличающимися парой знаков в коде, которую можно написать на час, берешь 0.5-1к с каждого и живешь счастливо).
Yuutsu Yuutsu 23.07.201721:05 ответить ссылка -1.8
Джун детектед. В крупных транснациональных компаниях полным-полно людей, которые про алгоритмы и не слышали, но работу свою делают, не всегда успешно. алгоритмо дрочерство и прочие студенческие заморочки это крошечные доли рынка, оплачиваемую работу найти очень трудно, а трудозатраты на получение качественного образования плюс самообразования могут запросто не окупиться. Быть тру разрабом мечта вчерашнего студента, на каждый гугл есть еще 100500 небольших и средних компаний ни чуть не худшими условиями по оплате, где требуется тупая рутинная ежедневная работа, где рулит правило "железо дешевле разрабов" и сроки важнее качества, им ненужна бигдата и нейронки, у них никогда не будет таких объемов, но делать по накатанной стабильной технологии важнее, чем ресерчить. Это чисто джунские/студенческие страхи, что если ты не работаешь в гугле с бигдатой и нейронками, не можешь отбалансировать красно-черное дерево ночью на туалетной бумажке карандашом за 2 минуты, то ты автоматом попадаешь в категорию фрилансеров-вебместеров. Не одним рокет-саенсом живы, кто-то должен делать и "простую" работу, которая прекрасно оплачивается, но не воняет пафосом.
Я ни разу не говорил про необходимость знать какие-либо серьезные использующиеся в продакшне алгоритмы, самое "сложное", что я упомянул - Дейкстра, да и то не написать (5 строк псевдокода, ага), а хотя бы в общих чертах объяснить принцип работы (хотя куда там, половина на физзбаззе отвалится, вот уж рокет сайенс так рокет сайенс).
А так да, можно сидеть в банке на нормальных 150к+, писать свои 7 строк кода в день, закрывать по паре тикетов "сделать чтобы кнопка была неактивной когда Х", но по мне это не особо отличается от формошлепства.
PS И нет, я в курсе что есть продукты, где на каждые 7 строк кода объективно надо 10 часов изучать проблему (а то еще и месяц убеждать других заапрувить сам патч), я не про это.
Yuutsu Yuutsu 24.07.201702:02 ответить ссылка -0.5
Вот объясни мне, нахрена 99% программистов в работе нужен Дейкстра? Хеш-таблица ещё ладно, без её понимания в очень редких случаях можно не догадаться об особенностях реализации некоторых стандартных классов и использовать их неэффективно. Но зачем, прости господи, графы то нужны в большинстве бизнес-задач?
Окей, согласен, это я со своей геймдев колокольни смотрю, хотя и тут он почти нигде не используется - просто пример дженерик алгоритма, чтобы понять что человек знает хоть какие-то основы. Можно подставить что-нибудь другое из той области, на которую идет джун.
Yuutsu Yuutsu 24.07.201723:09 ответить ссылка -0.1
Ну ок, для геймдева Дейкстра нужен почти всегда хотя бы в общих чертах
Уметь разбираться - да нужно, все время держать в памяти кучу алгоритмов - нет. Для повседневной работы крайне редко нужно помнить детали реализации, даже если какой-то алгоритм реализован лично тобой в одном экземпляре достаточно помнить что подать на вход и что получишь на выходе.
На самом деле разницу между этими вариантами видят как раз только джуны, сеньору обычно похуй - у него либо стоят жесткие кодстайлы и автоисправления в IDE либо у него есть дела поважнее скобкодрочерства. А еще любой сеньор всегда имеет тонну аргументов, чтобы обосновать любую хуйню, если ему очень захочется, чего джун обычно сделать не может. (потому что сам был джуном и его сеньор навяливал ему свои личные предпочтения как нерушимую истину).
Тут важно, чтобы в одном проекте были одни соглашения. Зоопарк разражает, потому что эти различия начинаешь замечать, и мозг отвлекается.
блять, блять, блять
Нормальному сеньёру похуй на такие детали отнюдь не потому что он этого не знает или это не важно, ему похуй потому что такие детали решаются на уровне спинного мозга, а джунов как раз надо еще дрессировать.
Так кодят моральные инвалиды. Оптимизатор компилятора многое поправит, не нужно так извращаться.
А потом после 100500 "Оптимизатор поправит" немножко не понимаешь, какого хуя драйвер видеокарты весит дохуя мегабайт.
Ты ступил, какой-то "иф" и "ретёрн" норм оптимизируется даже для шейдеров.
Не всякий if с ret-ом наура оптимизируются. Практика "а это компилятор оптимизирует" в сложных проектах выливается в говнокод, который нифига уже не оптимизируется и абсолютно нечитабелен.
Я джуниор.. пока прозябаю на 40ка, но.. читабельно же?
Morhem Morhem 24.07.201723:53 ответить ссылка 0.0
Непонятно, кем надо быть, чтобы написать второй вариант.
С третьим все понятно, это коротко, а первый может быть удобнее для последующего расширения, я бы еще скобки добавил.
Вообще, именно с опытом я все больше отказываюсь от конструкций, где много операций с одном выражении. Там проще всего затеряться какому-нибудь дерьму, и при отладке его увидеть будет сложнее. А лишние строки - кому они мешают? Сокращать код есть смысл, если он не влазит на экран, но тут уже вопрос, оправдан ли такой объем?
Большинство глюков вылазят из copy/paste, остальное не так стрёмно.
Много где работал, и повидал многое, первый вариант, если еще добавить скобки, самый верный, так как именно он увеличит читаемость, а так же позволит увеличить структуру, если нужно, и если в большом проекте, кто то напишет третий вариант, его попросту отругает сениор, да и далеко не все понимают, что сравнения это те же функции, который возвращают именно булиан, а не только используется в тех же ифах и форах.
WanSpi WanSpi 24.07.201700:07 ответить ссылка 1.6
Кодстайлы это религия, никаких логических объяснений тут быть не может. Всегда можно написать "Вы ничего не понимаете в разработке, а что если завтра .." и тут будет простыня аргументов, которая потом развернется в "Вы - хуй, ваша компания гавно, ваш софт хуита, уебываете из айти пока не поздно".
Программистом? Есть определенные стандарты кода, и на некоторых проектах их требуют соблюдать не просто так. Мало ли, что ты там нахомутаешь, выебнешься, напишешь сегодня нечитаемый регекс, или однострочник на 20 операций, а через год вылезет критический баг, а в твоем говнокоде даже ты не разберешься.

Понятное дело, что я утрирую, но если требуют писать по стандартам - то и пиши по стандартам.
За такой пидор-код как в варианте 2 и 3 из Microsoft уволили бы сразу. 2 вариант используется если выражение часто повторяется и есть подробный комментарий, который его объясняет.
Нужно БОООЛЬШЕ кода
dstwo dstwo 26.07.201711:08 ответить ссылка 0.0
String str = Boolean.toString(wage > 5000):
if (str.length() = 5)
return false;
else
return true;
SaschaG SaschaG 23.07.201719:44 ответить ссылка 22.3
Для тебя в аду греют отдельный котел.
Ты о том, что лучше через swith было, бы?
Я думаю, что нужны ассемблерные вставки, что бы повысить производительность в этом критическом участке кода
Есть видео, где ты делаешь это через switch?
Тимур Мансорунов
13 февраля в 21:04 Ö
selma selma 24.07.201702:27 ответить ссылка 2.1
switch(str.lenght()) {
case 4:
return true;
case 5:
return false;
default:
return thrue;
}
Ну опечатался, с кем не бывает.
03793 03793 24.07.201721:13 ответить ссылка 1.9
Одна буква в километре кода.
Синтаксические ошибки всё равно подсвечиваются компилятором.
03793 03793 24.07.201722:31 ответить ссылка -0.4
скажи это js.
Wolfdp Wolfdp 24.07.201722:54 ответить ссылка -0.7
А можно я не буду с ним разговаривать?
03793 03793 24.07.201722:55 ответить ссылка 2.4
Именно поэтому нужен typescript
Есть проблема -- опЯчатки в названиях полей/свойст. В большинстве случаев это ведет к обращению к null, но есть такой баг как завмыкать в поле биндинга на UI. Вот тогда сидишь и думаешь, а чего у тебя значение не отображается...
Wolfdp Wolfdp 24.07.201723:12 ответить ссылка 0.0
Есть хороший вариант - через ctrl+f смотришь подсветку предполагаемого глюкавого элемента.
Какие нибудь netbeans или npp это вполне себе умеют. Уверен, что джетбрэиновые и вижлстудийные IDE могут так же.
Всё нормально, троичная логика, типа true, false, null в каких-то скулях или True, False, FileNotFound в одном проекте на шарпах.
ну или еще проще -- булевская переменая, обьявленая выше.
Wolfdp Wolfdp 24.07.201722:54 ответить ссылка 0.0
#define thrue false
по дефолту сру
b.o.g b.o.g 25.07.201705:20 ответить ссылка 0.0
Добавь еще такое "++i--"
На людях переменные передёргивать. Фи.
phlush phlush 24.07.201721:48 ответить ссылка 1.5
А как же оптимизация?

String str = Boolean.toString(wage > 5000):
if (str.length() = 5)
return false;
return true;
пф, ECMA:

let str = Boolean.prototype.toString(wage > 5000):
if (Boolean.prototype.toString(str === 'false').length() === 4)
return false;
else
return true;
чего уж, мне больше нравится такой вариант
case $wage in
1 ) return false;;
2 ) return false;;
......
5000 ) return false;;
5001 ) return true;;
......
esac

жаль, что работает только для натуральных чисел
Heralt Heralt 23.07.201721:01 ответить ссылка 4.0
Ты лучше так и скажи, что тебе просто лень переписывать для дробных.
ты меня раскусил ( так что пользуюсь костылями
Heralt Heralt 23.07.201723:24 ответить ссылка 0.6
Не, надо упарываться дальше ).
echo "case \$wage in" > wage_is_more_5000.sh
for [ i in `seq 1 5000` ] do; echo "$i ) echo false;;" >> wage_is_more_5000.sh; done
echo "5001 ) echo true;;">> wage_is_more_5000.sh
echo "esac" >> wage_is_more_5000.sh
export wage = `cat /tmp/wage_res`
/bin/sh ./ismore5000.sh
vassav vassav 24.07.201722:43 ответить ссылка 0.2
if (wage > 5000) goto 1; if (wage < 5000) goto 2; if (wage = 5000) goto 3;
2 : return false;
1 : return true ;
3:goto 3; //Do not try to leave Oms
wwcc22 wwcc22 24.07.201703:46 ответить ссылка 16.4
Аж тыж... гоутушник!
Самое мерзкое, что я видел за сегодня, а ведь я утром в "Жесть" заходил.
03793 03793 24.07.201721:12 ответить ссылка 3.7
Тогда уж для полноты маразма

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
// True - memory generation, false - external file generation
parameters.GenerateInMemory = true;
// True - exe file generation, false - dll file generation
parameters.GenerateExecutable = true;
CompilerResults results = provider.CompileAssemblyFromSource(parameters, "namespace Conditon { class Condition { public static void Condition(int wage) { return " + wage.toString() + ">5000; }}}");
if (results.Errors.HasErrors)
{
StringBuilder sb = new StringBuilder();
foreach (CompilerError error in results.Errors)
{
sb.AppendLine(String.Format("Error ({0}): {1}", error.ErrorNumber, error.ErrorText));
}
throw new InvalidOperationException(sb.ToString());
}

Assembly assembly = results.CompiledAssembly;
Type program = assembly.GetType("Condition");
Assembly assembly = results.CompiledAssembly;
Type program = assembly.GetType("Condition");
MethodInfo main = program.GetMethod("Condition");
main.invoke(wage);
бля. Видел такой код в реальности
Я был на проекте, где в базе хранился признак типа varchar со значениями "да"/"нет". Как я понял, архитектор решил, что так будет короче, чем boolean true/false.
Drozd13 Drozd13 23.07.201719:44 ответить ссылка 41.8
Дык это же инжтех, математики от силы до пятого класса.
Если человек не знает языков программирования, это ещё не значит что он гуманитарий.
Ирония в том, что знание пусть искусственного, но всё-таки языка, противопоставляется в том числе и филологии, то есть знанию языков естественных.
Хм, а мертвые языки считаются за естественные?
Да, так как появились они естественным путём.
03793 03793 25.07.201711:18 ответить ссылка 0.7
Мёртвые языки? Фортран?
Латынь и санскрит
Если человек не знает языков программирования, кто назвал это человеком?
dstwo dstwo 26.07.201711:13 ответить ссылка 0.0
браток, я технарь - ремонтник всего, от зарядки до авто, но программирование - не мое, хотя я корочку имею.
Чем плох первый вариант?
как минимум лишним оператором
Который оптимизируется компилятором. Ничего там смертельного нет.
Не хватает фигурных скобок.
Поясню: первый вариант вполне мог быть заюзан с учетом того, что помимо ретурна нужно будет дописать еще какие-либо действия (да как минимум для дебага что-нить).
По невнимательности можно забыть дописать скобки позже и чуток зафакапиться из-за этого.
для дебага вполне, если хочешь брякнуться в момент неожиданности но для этого можно и ассертнуть
а breakpoints уже не используется при дебаге? Обязательно что-то втуливать в код, чтобы понять что происходит, а потом забывать почистить за собой?
Я веб-холоп. Частенько быстрее и проще дампануть что-нибудь в браузер, чем юзать xdebug.

>а потом забывать почистить за собой?
На прод такое не пройдет.
Или пойдёт.
Если оно ушло на прод - значит его хреново покрыли тестами.

з.ы хотя, что-то я думаю, что полное покрытие в большинстве случаев - из области ненаучной фантастики.
Раздражает своей простотой.
Результат сравнения уже булево значение, значит указывать явно true или false - уже излишне. Ветвление (if) всегда усложняет восприятие и чтение кода. В данном случае ветвление не нужно, а значит его в коде быть не должно.
Ну и мой любимый множественный return. Редко есть случаи, когда прерывание метода/функции оправдано, и этот явно не входит в их число.
warrcan warrcan 23.07.201720:43 ответить ссылка 12.3
explicit is better than implicit
return True if wage > 5000 else False
diveru4i diveru4i 23.07.201720:59 ответить ссылка 0.6
if ( wage > 5000 ) return true;
return false;
Rentier Rentier 23.07.201722:49 ответить ссылка -2.9
b = wage > 5000;
return b;
dr. s0m dr. s0m 23.07.201721:03 ответить ссылка -3.4
Адекватно.
Внезапно, компилятор к примерно такому виду и приводит всё.
Зачем заминусили человека? Так дебажить проще
Ну давай теперь на каждый чих переменные заводить.
И обязательно однобуквенные и двухбуквенные.
Так, давайте для малограмотных тоже самое, только на бейсике.
Hail Pascal!
Lictor Lictor 23.07.201721:29 ответить ссылка 0.6
Да, да... хайль. Но я учил только бейсик образца 80-японского года. Уж, простите ущербного.
Я боюсь здесь уже не осталось тех кто может писать на этом забытом языке
В Pascal.NET точно можно одной строчкой писать. В древнем паскале согласен, что нельзя.
с какого хуя?
любое выражение, которое может быть вычислено будет возращать результат, который можно использовать как аргумент для других функций.

само наличие конструкции if (логическое_выражение)... уже явялется этому подтверждением

function RetBool(x : integer) : Boolean;
begin
RetBool := x > 5000;
end;
b.o.g b.o.g 25.07.201705:36 ответить ссылка 0.3
Бейсикам не обучен, но могу на русском.

У нас есть метод, который предположительно обрабатывает заработную плату, мы видим собственно выход из метода (оператор return, который возвращает управление и передает результат в вызвавший метод). На трех фреймах мы видим три реализации одного и того же функционала (вернуть true, если ЗП больше 5000 и false в противном случае). В первом случае используется оператор ветвления if, во втором тернарный оператор, в третьем особенность того, что оператор сравнения сам по себе возвращает результат операции сравнения.

На практике особой разницы нет и больше зависят от общей культуры кода.
D4_Art D4_Art 23.07.201722:05 ответить ссылка 0.1
Эх, говорил мне батя "Учи ассемблер", но нет, бейсик был проще и понятней, а паскаля и вовсе не было в наличии.
Выучил бы ассемблер, пилил бы сейчакс микроконтроллеры за сотни нефти а бейсик рип
D4_Art D4_Art 23.07.201722:21 ответить ссылка 0.1
Не сыпь мне соль на рану.
Не совсем рип. Есть VB.NET, который развивается и имеет синтаксис VB и современные фишки.
10 LET WAGE = 4000
20 GOSUB 50000
30 PRINT RESULT
40 END
50000 LET RESULT = 1
50010 IF WAGE > 5000 THEN GOTO 50030
50020 LET RESULT = 0
50030 RETURN
pda0 pda0 24.07.201721:50 ответить ссылка 0.6
Я не всё помню и могу ошибаться, но я бы написал так.
10 LET WAGE = 4000
20 IF WAGE > 5000 THEN GOTO 100
30 LET RESULT = 0
40 GOTO 110
100 LET RESULT = 1
110 PRINT RESULT
120 END
В оригинале return, что намекает на функцию.
pda0 pda0 25.07.201721:41 ответить ссылка 0.0
Никогда не любил эти GOSUB и RETURN, типа подпрограмма, но GOTO хотя бы указывает на какую строку ссылается, в отличие от RETURN. Ну, да ладно, как уже сказали, язык скорее мёртв, чем жив.
Ну... FreeBASIC вполне себе живой. Правда там теперь и функции есть. И типизация... :)
pda0 pda0 26.07.201720:35 ответить ссылка 0.0
Тут есть гуманитарии? Напишите то же самое на Юридическом языке. Это тот самый, который занимает целые страницы текста, и слова вроде все по отдельности русские, нормальные, но пытаться соединить смысл отдельных слов - верный путь в психушку.
dstwo dstwo 26.07.201711:19 ответить ссылка 0.0
Для начала получите-ка счёт на 10000 долларов за бесплатную консультацию.
pda0 pda0 26.07.201720:36 ответить ссылка -0.1
return wage - 5000;

- вот так странно работает:
если wage 5000 то возвращает false - потому что 5000 минус 5000 будет ноль,
но
почему-то при других значениях wage возвращает всегда true.

как это объяснить?
refefe refefe 23.07.201723:22 ответить ссылка -1.6
Если речь идет о Си, то насколько я помню, то любое отличное от 0 значение- это истина.
Это если брать число, строки себя ведут по другому, пустая к примеру будет выдавать тоже true, хотя вот если брать другие языки, к примеру js, то там даже [ 0 ] будит считаться за false
WanSpi WanSpi 24.07.201700:09 ответить ссылка -1.5
В Си строки - char*, это как бы указатель на область памяти и строка заканчивается на "/0", а [0] єто первый элемент массива, ну никак не Си стандарт. Такое в Делфи было, где в первом элементе указывалось к-во символов в строке.
На счет [0] я имел в виду массив, с элементом '0', а на счет Си строк, согласен, это все тот же объект, который всегда конвертируется в true, если он существует, либо же false если его нету.
WanSpi WanSpi 24.07.201722:07 ответить ссылка 0.0
'0' == 48.
В С нету объектов.
В С не существует понятия "существует".
vovano vovano 25.07.201701:47 ответить ссылка 0.0
На счет нуля я говорил про js, а на счет существования, вы правы, прошу прощения что то я уже совсем начал забывать си и путать его с си++
WanSpi WanSpi 25.07.201709:33 ответить ссылка 0.0
Если Вес>5000 тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

1С))
LEXfes LEXfes 24.07.201700:48 ответить ссылка 1.6
есть тут кто на 1С на постоянной основе работает? код на русском языке даже спустя годы работы, кажется чем-то неестественным или привыкаешь?
Amlain Amlain 24.07.201704:37 ответить ссылка 0.4
Так же, как англоязычным на английском. Прикинь? Как ты думаешь, каково это знать английский язык и писать на нем код? Вот и с русским также.
gybson gybson 24.07.201709:06 ответить ссылка 1.0
можно и на англ писать, там #dedine прямо в среду зашит, а компилятор все подряд хавает. Вот отсутствие наследования (все классы за крааайне редким исключением предопределены) крайне огорчает иногда...
LEXfes LEXfes 24.07.201709:39 ответить ссылка 0.2
на 1С третий вариант используется.
gybson gybson 24.07.201709:05 ответить ссылка 0.1
Ох давно это было, но в теории как-то так:

someproc:
pop %eax
mov $0x1388, %ebx
cmp %eax, %ebx
jg toofat
push $0x0
ret
toofat:
push $0x1
ret
wage это зряплата, а не вес. Вес - weight.
Хм... Подтверждаются слухи, что на 1С пишут те, кто в английский не смогли. :)
pda0 pda0 24.07.201721:36 ответить ссылка 0.6
не, просто я сначала пишу,а потом разбираюсь что там)
LEXfes LEXfes 25.07.201700:39 ответить ссылка 0.0
Тот самый момент, когда закончил говноунивер 3 года назад и там тебе говорили что 1й базовый, 2й продвинутый, а про третий никто там не слышал нихера, и понимаешь что ты отсталый.
Смотрю на комменты и появляется ощущение, что полреактора это топовые программисты. И отсюда следует одно из двух:
1) Полроссии программисты
2) Почти все прогрпммисты любят сидеть на джое.
muted muted 24.07.201706:10 ответить ссылка 3.2
для того, что бы понять эту шутку не нужно быть программистом.
этому в школе на информатике учат
В школе (7 лет назад) учили разве что вкл/выкл компьютер да что такое локальные сети и их разновидности. Но если подумать, то допереть до смысла поста совсем не трудно (спасибо картинкам справа)
Мне больше нравится факт, что первая половина комментов о том, что 3 вариант самый правильный(все в плюсах, а те кто против - в минусах )
Но ближе к концу комменты за читабельность первого варианта уже в плюсах.

Пути реактора неисповедимы ))
ALD960 ALD960 25.07.201700:40 ответить ссылка 0.4
вообще я б и "5000" заменил на константу или параметр из конфига.
nivo nivo 24.07.201713:02 ответить ссылка 0.0
Будь в топе. Замени константу абстрактным обьектом-оболочкой. Саму константу храни в облаке и реализуй тонну кода для работы с облаком с помощью современных технологий и фреймворков.
если бы в таком виде хранились все параметры\темплейты и прочая настраиваемая фигня - то возможно бы так и сделал.
и пофиг что оно избыточно для числовой константы - но зато вообще все параметры в одном месте и их удобно хранить\читать.

ну и как бы "тонна кода" и "фреймворк" - взаимоисключающее
nivo nivo 24.07.201720:20 ответить ссылка 0.0
Ты с явой походу не знаком :D
Ну раз пошла такая пьянка, то вот:

+[----->+++++.---.[--->+--.++++++++.[->+++-.-[->+++-.++++++.--.--[--->+-.-[->++.[-->++.-----[->++-.-----...-------.>++++++++++.[->+++++....---[----->++.-------------.[--->+---.+.---.----.-[->+++++-.---[->++++.--.+++.++[->+++.++++[->+++.>++++++++++.+[--->+++++.+++++++.+++++++.++++[->+++.>++++++++++.[->+++++....---[----->++.-------------.[--->+---.+.---.----.-[->+++++-.++[->+++.-----.+++++++++++.+++++++.++++[->+++.++++[->+++.
Sayonara Sayonara 24.07.201721:07 ответить ссылка 3.1
Выглядит как очень сильное колдунство.
Ну это уже мозго*бство
WanSpi WanSpi 24.07.201722:10 ответить ссылка 2.9
это что за ебучая морзянка?
brainfuck же. Ровно как и сказал комментарий выше.
psys psys 24.07.201723:58 ответить ссылка 0.1
ENQ STX ? BEL STX STX BS ASK
Похоже на молитву Омниссии
dstwo dstwo 26.07.201711:23 ответить ссылка 0.0
neidik neidik 24.07.201722:02 ответить ссылка 5.6
А на перле смогёт кто-нибудь?)
kifat kifat 25.07.201702:23 ответить ссылка 0.0
Кэп!?
Синтаксис написания кода, со временем код становится всё проще, если раньше функции по полкам раскладывали, то сейчас достаточно небольшой строчки, которая выполнит ту же функцию. Ушёл бороздить просторы океанов.
Это из новой Субнаутики?
return $wage=~/^[5]0{3}$/gi; # Только регулярные выражения, только хардкор!
Hellsy Hellsy 25.07.201710:53 ответить ссылка 0.6
PERL, небось?
Ага.
Кстати, там же надо было больше 5000, а не ровно 5000? Тогда все будет выглядеть еще лучше, особенно с учетом дробных значений и отрицательных чисел:

$wage!~/^(-\d+(?:\.\d+)?|\d{1,3}(?:\.\d+)?|5000(?:\.0+)?|[1-4]\d{3}(?:\.\d+)?)$/gi;
Hellsy Hellsy 26.07.201709:59 ответить ссылка 0.1
Сколько у тебя ушло времени на эту... это.. Короче, как долго ты конструировал это... эту...
dstwo dstwo 26.07.201711:25 ответить ссылка 0.3
return wage / 5001;
Miriael Miriael 25.07.201712:00 ответить ссылка 0.0
ХАХААХАХАХАХХАХАХАХАХАХАХАХАХАХАХАХАХ
КЛАСС!
ХАХАХАХАХХАХАХАХАХАХАХ
MaJIbIu MaJIbIu 25.07.201713:26 ответить ссылка -1.3
1) What is 5000? Please use named constant in header file for this value.
2) Please rename variable wage according to coding convention.
3) In first case please use code block (see coding convention 2.3.14).
darkrip darkrip 25.07.201715:40 ответить ссылка 0.1
wage

так зарплата 5000 это в рублях, долларах или гривнах в итоге?
pl78 pl78 25.07.201716:32 ответить ссылка -0.1
Сложно сказать какой язык на картинке. В С++ gcc генерит одинаковый код https://godbolt.org/g/5q3Eja
JJack JJack 11.08.201714:49 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Читать
V
Добрая Утра
@dobraya_utra
Я придумала. Давайте оптимизировать церкви. Мало прихожан - закрывается. На город оставить 2-3. В сёлах закрыть, оставить 1 на район. Так же у нас делается?
Количество попов сократить, увеличить на них нагрузку до 70 прихожан в день. Отчёты, исповедь на дом,
подробнее»

церковь оптимизация

Читать V Добрая Утра @dobraya_utra Я придумала. Давайте оптимизировать церкви. Мало прихожан - закрывается. На город оставить 2-3. В сёлах закрыть, оставить 1 на район. Так же у нас делается? Количество попов сократить, увеличить на них нагрузку до 70 прихожан в день. Отчёты, исповедь на дом,
Please Enter Your Phone Number:
0003
0004
0005
0006
0007
0008
0009
0010 0011 0012
0013
0014
0015
0016
0017
0018 0019 I
CÏ5 fl Elements Console Sources Network Timeline Profite
-option value="0481">0481</option> <option value="0482">0482</option> <option value="0483">0483</option> -o
подробнее»

программирование боже дай сил О - оптимизация Баян,баян, боян, баяны, бояны, баянище, боянище удалённое

Please Enter Your Phone Number: 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 I CÏ5 fl Elements Console Sources Network Timeline Profite -option value="0481">0481</option> <option value="0482">0482</option> <option value="0483">0483</option> -o