LINUX.ORG.RU

А как в вашем ЯП относятся к целочисленному переполнению?


0

4

Навеяло недавним забавным багом в Диабло. Вот взять джаву. Вроде современный безопасный язык, память не расстрелять, хоть ты что делай, нулл не разыменовать, все такие баги вылетают с исключениями. Вот с делением на 0 не помню, но вроде тоже исключение вылетит, если не float делишь. А int переполнится и фиг ты об этом узнаешь.

Я встречал очень мало случаев, когда переполнение int-а при арифметической операции было бы корректным выполнением алгоритма. В реальной жизни об этом не думают вообще никогда, ибо 4 млрд это много и хватит каждой домохозяйке. Раз в сто лет не хватает и там вылезает бага. И бага, обычно, пренеприятная. Например как в диабле.

Чисто мое имхо — процессор должен кидать исключение (вызывать прерывание или как там такие ситуации обрабатываются) при переполнении по умолчанию, которое рантайм языка уже может обрабатывать как ему надо. В 99% случаев. А для 1% использовать другие инструкции, не кидающие исключение, ставить какой-нибудь флаг или использовать другой вариант. Ну это на аппаратном уровне, без этой поддержки реализовать отлов переполнения сложно, не будешь же после каждого сложения ставить проверку cf.

А как ваш ЯП помогает программисту в ситуации, когда происходит непредвиденное переполнение? Есть варианты всяких пайтонов, в которых прозрачно промоутится до многобайтной арифметики, но это, по-моему, жутко неэффективно (кстати аппаратное исключение и таким языкам поможет ускориться).

Или я не знаю возможностей современных аппаратных платформ и это всё есть, просто глупые джавы это не используют?

★★★★★

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

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

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

Лол, ты даже не прочитал название треда

по твоему переполнение только шифтами достигается?

На:

1> (round(math:pow(2,1023))) bsl 10000.
1793255634416776753914360369342169488921286954614025955238042352874601499992523340336865125285201582320682228579323964318738755784747218442102261487238635303387473442125859714385566373585105296375945858831278560077412566336826061557773103092856139779445427737885970310690894493270279335660518211623103607524111929371270554956713560772187945196442267489152374177351001156640716204600645218923010930790051831942216897751944341870775230369782424710573361297579366274685402236823644542928206527676705737486746376912371649088891838384741581072265079379638038728486184711717377607300281908249464396630341286448896213121209366007114915514910178623641017664283341963097038768211756840522443858963531352025449779624063901752368483347630829019760676626354285052726395635705588151153820290773452080204452600680816253449443735839061087815675692096441290514071136263421183197114499195781784650397782309149480229230218973127225494019932005338926471192116333772483234281027170061349224273743044899908363202645721432921576670293845402948169647518208122034169679223174389950266455366003317837872813943856257494155381990241902881680826176999099479172567914948701820941681920950400395128641580068482283798173475513740521195327670223847638989340097689000842354849107665061148823846837077572693159475118152095603506997366049488253773871704098891743131965955001249019576382275548740587557729183564573445817071069482879043510869955817972800694851244152826493094183090661330224785253543723435166759747011524003246378770189916741668631013714234995862678769638601770854637742493070444918671033616606872325001966375438704392942266496674258014358633048290847769416037579429796036564487181329620164593625891458923978575435063122191874178212256901437655017329018401876398017224155523169195037134460594263765921614264561284670550870803252307421373309188369452020041211253655320745919398675230871450506021155366505363262320427821255701134320780982269994648806383209610116149722176787664374149813784469849523434610916842836511469945601073470549416259936274094558784015177412912984181729264874961227686316899763291088460230752882279781261002765082022902967686542153087903872556296079221302369798144784201820185602448015947485479303209007003048320064507478241156985896382767728397544236261052198448934444162926899865582925303205678003070520442406093252088780781996361983446237662141489647601167513881748887823968413210791809199656458830668721574359405896974874371863451156496703639275147475157645849213063246260498498740292672415686831562024901813268683683154098449401405545717512495891960417813435142461079866658174933464698527722031415901958981400829931721213112121963037881066666719903444675862804111410300810681324321530912688890261533704057034391614702227247818059826903949407063401078690411508225847911882336965748590680970655380674872058940810726564918260579040692639659400595937822737786036944506459966542697763874116690152859319746529570753435110265110345883668766236821482534171630233926021585560013820703250270922920590262555980283294716512992364343113227446232140178759149887458877932523895916450387478139635264782406856691996736381826363957877375926107342393916488269287932098195485913985825596240787265166378959344821970027662244544536202050369949234656810010531213287068605456843755353514855333277928767833331214555193506067719237148868608

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

Наверное я просто не знаком с твоим языком:)

Он напечатал x.xxxxxexx. Я подумал, что он конвертнул всё в floating-point, так как обычно такой формат печати применяется именно к ним.

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

Тех заключений, что делаешь ты, мне никогда не сделать.

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

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

Твой экстраординарный скилл в глупости, проявляемый в твоих заключениях

Заключениями занимаешься ты, а я просто указываю на факты.

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

я просто указываю на факты.

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

auto12884839
()

целочисленному переполнению

К чему-чему?

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

Представь, что ты потратил $50k на одну машину, но она хорошо умеет только запускать AI-приложения.

А что из софта, доступного в Genera, ты определяешь, как AI-приложение?

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

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

А что из софта, доступного в Genera, ты определяешь, как AI-приложение?

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

Third-party applications

Several companies developed and sold applications for Symbolics Genera. Some Examples:

* ART (Automated Reasoning Tool), an expert system shell from Inference Corporation

* iCad, 3d parametric CAD system

* Illustrate, graphics editor

* «KEE» (Knowledge Engineering Environment), an expert system shell, from IntelliCorp

* Knowledge Craft, an expert system shell, from Carnegie Group

* Metal, machine translation system from Siemens

ART, KEE и KnowledgeCraft - это AI (и, ЕМНИП, инструментов разработки knowledge-based систем было еще довольно много).

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

Честно говоря, я ни о чем сверхнеобычном не слышал со времен iAPX432.

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

Я указываю на факты, чтобы люди делали свои заключения.

Но ты же их не беспристрастно указываешь, а тонко перевирая и передёргивая.

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

тонко перевирая и передёргивая.

Что такое, на рынке до сих пор есть Лисп-машины? Не, я понимаю, что mv может ее продать тебе, но это не рынок.

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

Я маленький слишком, чтобы застать то время. Но Вики имеет сказать следующее: Third-party applications

Помимо лиспа и всякого AI там был C, pascal, fortran, ada, prolog, а также:

    Symbolics Concordia, a document production suite
    Symbolics Macsyma, a computer algebra system
    Symbolics NS, a chip design tool
    Symbolics S-Graphics, a suite of tools: S-Paint, S-Geometry, S-Dynamics, S-Render
    Symbolics S-Utilities: S-Record, S-Compositor, S-Colorize, S-Convert
    Symbolics Scope, Image processing with a Pixar Image Computer
    Symbolics Statice, an object-oriented database

Неслабый такой наборчик для второй половины 80-х.

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

Честно говоря, я ни о чем сверхнеобычном не слышал со времен iAPX432.

Это, считай, тоже лисп-машина была.

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

Вполне очевидно, что одна фирма Symbolics не могла создать достаточно приложений, а сторонние фирмы писали то, что приведено выше.

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

iAPX432.

Это, считай, тоже лисп-машина

Сам считай %) iAPX432 был Ада-машиной.

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

Вполне очевидно, что одна фирма Symbolics не могла создать достаточно приложений, а сторонние фирмы писали то, что приведено выше.

Ну персональных компутеров тогда вообще не шибко много было, а симболикс уж больно элитарные ПК выпускала. В итоге, элитарные ПК исчезли так же, как и элитарные суперсерверы. А щас везде засилье x86-64, подешевевших до уровня грязи.

Симболикс-то как раз софта дохрена написала за свою сверхкороткую историю. Попробуй chip design tool написать... ;)

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

Что такое, на рынке до сих пор есть Лисп-машины? Не, я понимаю, что mv может ее продать тебе, но это не рынок.

Ты зря эту тему недооцениваешь. С доступными по вполне божеским ценам FPGA специализированным схемам самая широкая дорога открывается. Вон, дядечки сделали J1 Forth CPU, и радуются.

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

Симболикс-то как раз софта дохрена написала за свою сверхкороткую историю

Писание софта своими силами не масштабируется.

С доступными по вполне божеским ценам FPGA специализированным схемам самая широкая дорога открывается

Я знаю. Проблема в том, что Лисп-машина - это недостаточно специализированная схема.

tailgunner ★★★★★
()

А как ваш ЯП помогает программисту в ситуации, когда происходит непредвиденное переполнение?

Если в коде директива {$R+} то выбросит ошибку, если {$R-} то не заметит.

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

Что такое, на рынке до сих пор есть Лисп-машины? Не, я понимаю, что mv может ее продать тебе, но это не рынок.

Вот видишь, без передёргиваний никак.

она хорошо умеет только запускать AI-приложения.

Это враньё безусловно. Лисп-машина хорошо умеет всё то же самое, что и любая другая. Разница по большей части только в хардверном GC и тегах. Вместо тегов сейчас сегменты в защищённом режиме, а хардверный GC есть в любой аппаратной жаба-машине. Так в чём неуниверсальность?

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

Что такое, на рынке до сих пор есть Лисп-машины? Не, я понимаю, что mv может ее продать тебе, но это не рынок.

Вот видишь, без передёргиваний никак.

Как скажешь.

Вместо тегов сейчас сегменты в защищённом режиме, а хардверный GC есть в любой аппаратной жаба-машине

Ахаха.

tailgunner ★★★★★
()

У нас тип Integer не переполняется.

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

Покажи дураку Палец, называется...

«Они смеялись над Коперником, над Галилеем... но помни, что они смеялись и над клоуном Бозо» (ц) Если над тобой смеются - скорее всего, ты клоун. Ну а после «вместо тегов сейчас сегменты в защищённом режиме», ты именно клоун-недоучка.

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

Мультипарадигменность не нужна.

Нужна.

Зачем?

Удобно.

Типа столяр начнет кричать что молоток-стамеска-клещи ненужны, достаточно топора. Им же и бриться, ага.

Под разные задачи разные инструменты и разные парадигмы. Если задача сложная - парадигм надо несколько;-)

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

Типа столяр начнет кричать что молоток-стамеска-клещи ненужны, достаточно топора. Им же и бриться, ага.

Напился - не буянь!

Если задача сложная - парадигм надо несколько;-)

Упорин?

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

Чет я не понял. Мультипарадигменность ненужна. Питон ненужен. С++ с евойным особо извращенным ФП видимо тоже? А «нужны ли мы нам»(ц)?

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

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

«Они смеялись над Коперником, над Галилеем... но помни, что они смеялись и над клоуном Бозо» (ц) Если над тобой смеются - скорее всего, ты клоун.

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

Ну а после «вместо тегов сейчас сегменты в защищённом режиме», ты именно клоун-недоучка.

Этим руководствовались здесь при ведении дискуссий ещё в те времена, когда ты по утрам хныкал «не хочу в садик». Ты своими речами вздумал покрасоваться перед школотой, или что?

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

Ну очевидно же, что исключения будут вылетать гораздо реже, чем будет происходить проверка. Но вообще емнип на x86 есть команда go-if-cf, так что по идее это не должно быть медленным (в случае если ничего не случилось).

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

Не имел чести работать на питоне, считаю его жутью и болотом. Да, я из этих.
Также считаю C++ и питон продуктом стремного комбайнерства некоторых личностей.
Мультипарадигменность я вижу в scala, scala я вижу там, где группа не очень умных людей просто зарабатывает деньги. Мне от этого грустно.
Вместо плюсов я 2 раза подумаю и выбиру яву. Там, где я решу за функциональщину, я выберу haskell.

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

А использовать сразу ООП и ФП религия не позволяет?

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

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

То есть проблема то не в том, что нынешний программист не образован и не знает ФП и всяких там монад - проблема в том, что ему это ненужно на самом деле, не знает он таких задач где нужна мультипарадигменность. А дальше уж каждый быдлокодит по своему, в рамках милой его сердцу парадихмы;-)

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

Зачем?

«Мультипарадигменные» вопрос очень общий - смотря чего скрещивать.

Если нет type classes то объекты скрещенные + функциональщина + higher kinded types - очень неплохо и удобно - скала тому пример. добавим message passing, но не эрланговую реализацию, потому что тамошняя реализация GC как серпом по яйцам производительности. Плюс отсутствие статической типизации. А даже если бы и была - без type classes или объектов, получилось бы максимум ml - а это обозначает жестокий c'n'p, и без возможности генерализации фреймворков вокруг например группы структур (Вышел Ceylon M5 «Nesa Pong» (комментарий)). А без F# pipe operator получается чертов лисп - мало того что неудобно, так еще и без HKT звездец.

Так что скальные l.filter(...).map(...) мне пока нравятся по удобству больше всего.

Плюс если взять конкретные реализации - мало того что эрланг тормоз, так еще тамошня shared nothing действительно shared nothing - то есть если у тебя в памяти здоровенная херня - то работать с ней охрененно медленно на генетическом уровне. Херню никуда не передать, к херне несериализованно не доступиться. А если херню надо мутироать или хотя бы подменять - это звездец (как раз сегодня изобрел ocamlовые refы для эрланга). А на скале (или даже ocaml с ref) было бы сказка как легко - а это уже мультипарадигма и есть. Плюс он еще сука тормоз мрачный просто.

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

Почему не haskell вместо ocaml?

Слишком строго. Предпочту скалу. Банально отладчный лог надо чтобы подебажить что-то нерабочее - и IO во все дыры пролезло. Ну еще я рассматриваю с точки зрения своих текущих задач - high performance trading - а неконтролируемая ленивость тут мне не помогает, когда структуры большие, а строгость милисекундная - слишком много крови отлаживать производительность ленивости.

r ★★★★★
()

если ты изначально знаешь что будет переполнение - gmp. если ты не исключаешь такой возможности - нужно писать тесты, собирать их с fwrapv и смотреть не свалится ли. кстати твоя джава и хаскель делают именно так. док

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

Ну а после «вместо тегов сейчас сегменты в защищённом режиме», ты именно клоун-недоучка.

Этим руководствовались здесь при ведении дискуссий ещё в те времена, когда ты по утрам хныкал «не хочу в садик»

Ну так разорви замкнутый круг - не дави на эмоции, объясни, как «сегменты в защищиенном режиме» заменяют теги.

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

Да ну брось ты. Если бы умел - делал бы. Я вон пока свой спектрум на бейсике программировал, шире бейсика программирование и не понимал...

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