1.1, Аноним (-), 12:44, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –31 +/– |
Нормально так. Все ошибки показательны для языков программирования C, C++ и являются их генетическими дефектами. Как вывод: большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
| |
|
2.15, Аноним (-), 14:45, 25/02/2012 [^] [^^] [^^^] [ответить]
| +16 +/– |
> страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
Ну хорошо, а большие проекты вебни страдают от CSRF, XSS, insecure data handling во всех ипостасях, SQL-иньекций, ошибок разграничения доступа, ... - ну что, вам полегчало, да? :)
| |
|
3.62, Xasd (ok), 22:40, 25/02/2012 [^] [^^] [^^^] [ответить] | +4 +/– | интересно что используя нормальные Фрэймворки -- довольно сложновато допустить ... большой текст свёрнут, показать | |
|
4.79, ананим (?), 23:42, 25/02/2012 [^] [^^] [^^^] [ответить]
| –2 +/– |
>[зато очень ЛЕГКО допустить SQL-Inj -- в PHP
а где сложнее?
>при традиционном использовании там MySQL]
а с MsSQL это будет сложнее сделать?
зыж
это применимо для ЛЮБОГО языка программирования. и СУБД соответсвенно тоже.
ну а для того, кто даже прочитать доку (по-русски!!! не в каждом мсдн найдёшь :D) http://php.net/manual/ru/security.database.sql-injection.php не удосужился,... конечно пыхпых виноват.
странно что они в этом ещё сиквел-сервера не обвиняют. а то выдают понимаешь ли секюрную инфу всем подряд.
а сравненние фрэйворком с языками программирования... и не знаю как это назвать.
| |
|
5.83, VoDA (ok), 00:32, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>>[зато очень ЛЕГКО допустить SQL-Inj -- в PHP
> а где сложнее?
В java через JPA или любые языки работающие с SQL через связанные переменные.
| |
|
6.91, ананим (?), 01:29, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Ха! Через.
А jdbc там ужО отменили?
Через <подставь_нужное> можно и в <подставь_любой_язык>.
А можно даже свои фильтры написать.
Зыж
Когда в языках запретят прямой доступ к данным, тогда и придёт апокалепсис.
| |
|
7.94, VoDA (ok), 02:32, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Ха! Через.
> А jdbc там ужО отменили?
> Когда в языках запретят прямой доступ к данным, тогда и придёт апокалепсис.
В каком то смысле jdbc уже отменили. в приложении ты можешь запросить работающий EntityManager, а можешь запросить JDBC коннект.
Потому несколько следствий:
1. с точки зрения приложения JPA не обертка поверх JDBC, поскольку приложение не имеет доступа к созданию JPA-инфраструктуры.
2. JPA может быть построен поверх иных нежели JDBC коннектов с системами хранения, в том числе и NoSQL.
3. поскольку все конфигуриврование инфраструктуры идет через архитектора проекта, а на боевых серверах через админа, то даже криворукие программеры не могут применить JDBC коннекты без разрешения архитектора. Коннекторов просто не создано в инфраструктуре.
| |
|
|
9.111, Xasd (ok), 04:57, 26/02/2012 [^] [^^] [^^^] [ответить] | +1 +/– | причём тут можно или нельзя чащще всего ошибки допускаются -- в случаях ког... текст свёрнут, показать | |
9.135, VoDA (ok), 11:42, 26/02/2012 [^] [^^] [^^^] [ответить] | –1 +/– | Пожалуйста напиши мне пример JavaEE приложения на JPA с возможностью SQL-injecti... текст свёрнут, показать | |
|
|
7.190, Tav (ok), 01:19, 27/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
Справедливости ради, в jdbc никто не подставляет параметры в sql выражения путем конкатенации строк, для этого есть http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html, исключающий возможность инъекции и улучшающий производительность, за счет того, что разбор выражения выполняется один раз.
API, в котором для подстановки параметров в sql выражения предполагается использовать конкатенацию или другие средства работы со строками, — неимоверный дебилизм.
| |
|
|
9.211, Tav (ok), 11:15, 27/02/2012 [^] [^^] [^^^] [ответить] | +/– | В PHP prepared statements добавили позже, следуя примеру JDBC И да, те, кто изн... текст свёрнут, показать | |
|
|
|
|
|
|
|
2.24, Карбофос (ok), 15:14, 25/02/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
в хоть программировали на этих языках, или это так, точка зрения жаба/дотнет-кодера? пардон, если я ошибаюсь.
| |
|
3.39, тоже Аноним (ok), 17:32, 25/02/2012 [^] [^^] [^^^] [ответить]
| +9 +/– |
Плевки жабистов и дотнетчиков в сторону Сей и Крестов на форумах - это не точка зрения, это нечто физиологическое.
| |
|
4.201, Аноним (-), 10:30, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Плевки жабистов и дотнетчиков в сторону Сей и Крестов на форумах -
> это не точка зрения, это нечто физиологическое.
Как будто они багов в том числе и ведущих к уязвимостям не делают :)
| |
|
|
2.25, Аноним (-), 15:17, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Нормально так. Все ошибки показательны
Все программы имеют ошибки? Капитан, Вы?
| |
2.28, fork8 (ok), 15:33, 25/02/2012 [^] [^^] [^^^] [ответить]
| +10 +/– |
Многое пишется на явах, шарпах, но когда в статье говорится о ядре линукса, к примеру, или о бд postgres, сама критика с/c++ становится не то, что неуместной, а какой то неадекватной.
| |
2.58, Аноним (-), 21:23, 25/02/2012 [^] [^^] [^^^] [ответить]
| –4 +/– |
> большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
Что касается С++, то в 21-м веке уже нет никакой необходимости управлять памятью или любыми другими ресурсами вручную. Если кто-то всё еще считает, что в С++ управляют памятью руками, то он отстал от жизни лет на 10, а может и на 15.
| |
|
3.63, Xasd (ok), 22:48, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
> Что касается С++, то в 21-м веке уже нет никакой необходимости управлять
> памятью или любыми другими ресурсами вручную. Если кто-то всё еще считает,
> что в С++ управляют памятью руками, то он отстал от жизни
> лет на 10, а может и на 15.
печаль тут в том что некоторые не только считают, но ещё е УПРАВЛЯЮТ в C++ ресурсами вручную :-/ ...
| |
|
4.65, pavlinux (ok), 23:03, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
С++ надо вообще прибить как не нужный балласт между С и более высшими языками.
| |
|
5.74, Карбофос (ok), 23:22, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
и тут Остапа понесло... ;) просто уровень абстракции несколько другой, но не до такой же степени, чтоб из константной строки при сложении с объектом-переменной создавать объект. o_O
| |
|
6.77, pavlinux (ok), 23:31, 25/02/2012 [^] [^^] [^^^] [ответить]
| +2 +/– |
Вот я из-за принципа Ц++ не юзаю. Рядом со мной сидят ещё трое, вот они там х..ячат
интерфейсы на плюсах, у меня мозг вянет после их диалогов... И главное обсуждаются
не проблемы, скжем, узких мест тех или иных алгоритмов сортировки, а как какой объект
куда-то вынуть, член в класс, классы члена в объект, всё это в конструктор, а потом
деструктор, а почему не работает деструктор, а какого фига оно не delete если тама
авто деструктор, члены, классы, члены, классы,члены, классы,.... а-а-а-а-а-а...
| |
|
7.80, Аноним (-), 23:55, 25/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> И главное обсуждаются не проблемы, скжем, узких мест тех или иных алгоритмов сортировки
Не знаю как где, но авторы С/С++ позаботились о том, чтобы прикладным программерам не нужно было обсуждать алгоритмы сортировки.
Для С есть функция qsort. Для С++ - stl::sort(). Можешь быть уверен, реализованы они через наилучший алгоритм.
| |
|
|
9.85, arisu (ok), 00:46, 26/02/2012 [^] [^^] [^^^] [ответить] | +2 +/– | т-с-с как ты посмел сомневаться, неверный stl и libc созданы не человеками, но... текст свёрнут, показать | |
|
|
|
|
|
|
|
16.175, arisu (ok), 18:02, 26/02/2012 [^] [^^] [^^^] [ответить] | –1 +/– | а мужики до сих пор не знают 8230 наверное, ты просто всем сообщить не успел п... текст свёрнут, показать | |
|
|
18.185, arisu (ok), 22:44, 26/02/2012 [^] [^^] [^^^] [ответить] | –2 +/– | вот что интересно вроде бы и связно человек пишет, и вещи достаточно неглупые ... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
|
9.86, Аноним (-), 01:14, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Наилучший для общих случаев, которых 99 Да, исключительные условия, возможно, ... текст свёрнут, показать | |
|
10.89, xxx (??), 01:22, 26/02/2012 [^] [^^] [^^^] [ответить] | +1 +/– | Я искренне рад за тебя, и даже завидую Зафигачил qsort и радуешься ... текст свёрнут, показать | |
|
|
|
7.81, Карбофос (ok), 23:58, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
ну какие-то мелочные они у тебя. ко мне коллеги обычно обращаются с просьбами расширить опциями интерфейс - не больше. я к ним - с такими же претензиями. что-то концептуальное - совещание делаем. но не дискутируем по каждой мелочи. у каждого есть строго своё поле действий. кто писал код, тот и получает тикеты. хотя, тот же проект можно переписать на сях, но много переделывать нужно будет. векторы, к примеру. не сильно хочется на realloc/malloc переходить и на связные списки. понимаю, что это фактически то же самое, только в обвеске разница. но тем не менее :) рубили бы с самого начала на сях - другое дело. а сейчас уже позно рыпаться.
| |
7.100, fork (??), 02:56, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>Вот я из-за принципа Ц++ не юзаю
С такими принципами может и с линуксом завязать, где на сях много чё написано, да ник сменить?
| |
|
|
|
|
3.202, Аноним (-), 10:31, 27/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> что в С++ управляют памятью руками, то он отстал от жизни лет на 10, а может и на 15.
В XXI веке нет никакой нужды в этих галимых велосипедах, самолетах и поездах! Ведь давно уже придуманы ракеты! А то что в магазин в соседнем закоулке так ездить не очень практично получается - ну извините...
| |
|
2.84, VoDA (ok), 00:34, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Нормально так. Все ошибки показательны для языков программирования C, C++ и являются
> их генетическими дефектами. Как вывод: большие проекты на C,C++ неизбежно будут
> страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
н-да.
большая часть, а именно:
Разыменование NULL-указателя (Null Pointer Dereferences) 2,818
Неинициализированные переменные (Uninitialized Variables) 2,051
Повреждения памяти (Memory Corruptions) 1,551
Ошибки присутствия прямой работы с памятью. И это в 2012 году =(((
| |
|
3.90, xxx (??), 01:25, 26/02/2012 [^] [^^] [^^^] [ответить]
| +3 +/– |
И не говори, GC также жрет неуёмно память. в runtime выполняется куча всякой левой фигни. И это в 2012 году =(((
| |
|
4.98, VoDA (ok), 02:43, 26/02/2012 [^] [^^] [^^^] [ответить] | +2 +/– | Да Тут выбор либо ошибки в коде или CPU работает за программиста Машина должна... большой текст свёрнут, показать | |
|
5.103, fork (??), 03:27, 26/02/2012 [^] [^^] [^^^] [ответить]
| +5 +/– |
<Как только появится язык, который принципиально уберет часть багов из java и C# (к тому же <будет простым в применении), так сразу он начнет захват энтерпрайза.
Хочется верить, что так может быть, но до последнего времени все критичные к производительности программы делались на сях да плюсах притом с асмовскими вставками в критических случаях, ибо на языках вроде явы да шарпа - съедание памяти да падение скорости повышаются чуть ли не в геометрической прогрессии. Если все-же такой язык и возможен - это, наверное, потребует скорее аппаратного решения, а не просто синтаксиса и прочих особенностей языка, но пока такие решения проваливались.
| |
|
6.130, VoDA (ok), 11:30, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | gt оверквотинг удален Начнем с начала, что в реал-тайме вообще выделение освоб... большой текст свёрнут, показать | |
|
7.144, arisu (ok), 13:54, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
ну вот — чего не хватишься, всё у них запрещают. а почему, собственно, надо запрещать? потому что некоторые путают RT и «хочу все ресурсы и чтобы никто не дёргал»? или потому, что не способны даже GC с прогнозируемым временем исполнения написать?
вообще, не начинал бы ты про RT. не надо. а то у меня комплекс неполноценности будет от того, что я однажды вполне себе использовал для RT Scheme с вполне рабочим GC. и оно таки было RT. и даже работало без проблем. а оказывается, так нельзя…
| |
|
8.148, VoDA (ok), 14:22, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Запрещать нужно для запрета совершать ошибки Даже на С освобождение памяти ди... большой текст свёрнут, показать | |
|
9.151, arisu (ok), 14:32, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | с каких пор это костылище стало эталоном O_O каким образом это должно волновать... текст свёрнут, показать | |
|
10.171, VoDA (ok), 17:40, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Я уверен, что вы умеете писать программы так, что в них не содержатся ошибки Но... текст свёрнут, показать | |
|
|
12.180, VoDA (ok), 21:34, 26/02/2012 [^] [^^] [^^^] [ответить] | –2 +/– | мемори ликов - нет пока сама JVM не течет, но и это давно отлажено в сферичес... текст свёрнут, показать | |
|
|
|
|
|
7.230, adolfus (ok), 21:47, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Начнем с начала, что в реал-тайме вообще выделение/освобождение не должны применяться. А в идеале запрещены.
мне в реалтайме нужно обрабатывать поступающие из очереди запросы. И как я это сделаю не выделяя/освобождая память, если я не знаю, сколько памяти потребуется для обработки запроса, пока его не заберу?
Если вам нужно часто просить/освобождать память относительно небольшими (в среднем много меньше страницы) кусками, есть кошерный выход -- вы самостоятельно пишете аллокатор в юзерспейсе, заточенный специально под ситуацию. Ускоряет обработку неиллюзорно. Проверено на системе, которая обрабатывает до 65536 очередей с запросами, требующими для обработки от нескольких байт до мегабайта.
| |
|
8.231, VoDA (ok), 00:55, 28/02/2012 [^] [^^] [^^^] [ответить] | +/– | Предварительное аллоцирование по максимально возможному размеру запроса В RT вс... текст свёрнут, показать | |
|
|
|
5.108, arisu (ok), 04:24, 26/02/2012 [^] [^^] [^^^] [ответить] | +5 +/– | 8230 затачивались под стадо взаимозаменяемых обезьян вот и весь секрет нет ... большой текст свёрнут, показать | |
|
6.128, жабабыдлокодер (ok), 11:20, 26/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
Да-да, раньше вот были знатоки и профессионалы: лошадь подкуешь, запряжешь, сидишь на ней правильно, потом распрягать, чистить, корм тот же правильно подобрать нужно... А сейчас? За руль садятся, зажигание включают - и поехали. Обезьяны, чего с них возьмешь...
| |
|
7.136, Аноним (-), 11:51, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
А сейчас в авариях погибают больше чем во время боевых действий. Обезьяны, чего с них возьмешь...
| |
|
6.129, Df232z (ok), 11:28, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>…затачивались под стадо взаимозаменяемых обезьян. вот и весь секрет.
Как впрочем и с++. Куда то толпу симула погромистов надо было девать.нет. как только >появится язык *ещё тупее*, чем жаба — так вот и начнёт. проблема в том, что особо тупее-то и некуда, если хочется язык хоть немного практически полезным сохранить.
Я бы не назвал java тупым. Излишне много словным - да, медленно развивающимся - да. Но не тупым.
>потому что code monkeys cannot into Smalltalk
Вообще то, основной причиной по которой Smalltalk, проиграл java было то что он был на тот момент платным. А вообще есть хорошее выступления "What Killed Smalltalk" от дяди Боба:
http://www.youtube.com/watch?v=YX3iRjKj7C0
| |
|
7.146, arisu (ok), 14:04, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Я бы не назвал java тупым. Излишне много словным — да, медленно
> развивающимся — да. Но не тупым.
увы, он реально тупой. да ещё и испорченый попыткой запихать туда концепции, которые изначально там не планировались и не были нужны. к тому же он совершенно неконсистентный (ага, мой любимый пример с int и Integer). я понимаю, зачем так было сделано, но костылями оно от этого быть не перестаёт.
> Вообще то, основной причиной по которой Smalltalk, проиграл java было то что
> он был на тот момент платным.
и по этой тоже, конечно. но не только по этой.
p.s. я не говорю, что цпп-обезьянки чем-то сильно лучше. увы-увы.
| |
|
8.150, VoDA (ok), 14:25, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Будь последователен - расскажи в чем неконсистентность наличия примитивного и об... текст свёрнут, показать | |
|
9.152, arisu (ok), 14:33, 26/02/2012 [^] [^^] [^^^] [ответить] | +1 +/– | ты сам уже всё сказал если до сих пор не очевидно 8212 медицина бессильна p... текст свёрнут, показать | |
|
10.172, VoDA (ok), 17:47, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Да, есть косяк Появился в лохматом году из за того, что на объектах работать сл... текст свёрнут, показать | |
|
|
12.182, VoDA (ok), 21:39, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | Ок Это был маркетинговый ход для привлечения С ников, которых много и для кот... большой текст свёрнут, показать | |
|
|
14.232, VoDA (ok), 00:57, 28/02/2012 [^] [^^] [^^^] [ответить] | +/– | боксинг это фишка компилятора синтаксичекий сахарок замыкания в прочем тоже са... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
6.132, VoDA (ok), 11:34, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> а так — я тебе секрет расскажу: Smalltalk в применении прост.
> и весьма навёрнутый отладчик с возможностью
> отлаживать *работающую* систему — без специальных хуков, сборок, запуском под «инструментальной средой»
Наверное про отладчик нужно писать для заманивания С или С++. Но явно не для java-истов у которых это out-of-box. =)))
Хочешь отлаживать работающую систему - да пожалуйста. Хоть через SSH прокинь, хоть еще как подцепись ;)))
| |
|
7.145, arisu (ok), 14:00, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
у жабистов. отладка. оборжака. ребятки, когда у вас будет отладчик хотя бы в половину мощности и удобства смолтолкового — вы будете получать мультиоргазмы и смотреть на всех других как на дождевых червяков.
я понимаю, что ты со смолтолк-системами не работал, поэтому даже не представляешь, что это такое и почему остальные нервно курят в сторонке. а ты попробуй. только не на уровне «яничегонепонялзначитфигня».
p.s. ещё один повод у меня ненавидеть жабу — вполне личный: сантехники купили команду, разрабатывавшую Strongtalk. попробуй без википедии угадать, для чего.
| |
|
8.157, VoDA (ok), 14:48, 26/02/2012 [^] [^^] [^^^] [ответить] | +/– | из того, что увидел на вики-учебнике про отладчик для смаллтока и что не присутс... текст свёрнут, показать | |
|
|
6.204, Аноним (-), 10:34, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> Никакой фантастики — java, как и C# прошли в лидеры поскольку
> …затачивались под стадо взаимозаменяемых обезьян. вот и весь секрет.
Капитан как обычно суров но справедлив :)
| |
|
5.203, Аноним (-), 10:32, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Машина должна думать, а человек работать. Только час работы машины несоизмеримо
> дешевле часа работы человека. Как следствие ВСЕ, что можно переложить на
> машину нужно переложить на нее.
Поэтому жабисты пытаются переложить на нее даже думание. Так, чисто глядя на поделки от таких как вы...
| |
|
|
|
2.197, Некто (??), 06:22, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> "будут страдать от ошибок программиста отслеживать в ручную управлением памятью"
Является ли вышеприведенный текст "генетическим дефектом" русского языка?
| |
|
1.4, Аноним (-), 13:14, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Сегодня анализирует, завтра сама будет писать код. Не далеко до кнопки "Зделать зашибись". Так и до восстания машин докатится можно :(.
| |
|
2.7, тоже Аноним (ok), 14:15, 25/02/2012 [^] [^^] [^^^] [ответить]
| +11 +/– |
Ну, на компьютере давно есть кнопка "проверить орфографию" - кто же ей пользуется?
Три предложения - три ошибки. Зато машины не восстанут.
| |
|
1.5, MrClon (?), 13:24, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> дереве Staging и сетевом стеке уровень качества составляет 0.97, файловых системах 0.65, драйверах 0.61
Посмотреть так вообще не понятно как оно умудряется работать, однако-же работает.
| |
|
2.6, 1 (??), 13:56, 25/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
так и работает... то тут отвалится, то там
| |
|
1.8, uy2qw (?), 14:20, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней
Вот это производительность труда! Они устраняли 40 дефектов в час! Или там просто штат очень большой?
| |
|
2.11, qux (ok), 14:36, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Инфа непонятно откуда, гугл по "brl cad covernity" почти ничего не находит.
| |
2.27, Аноним (-), 15:20, 25/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Вот это производительность труда! Они устраняли 40 дефектов в час!
И что, ты не запатчишь 40 кривых использований указателей за час например? Ну хотя если ты проприетарщик, понимаю, кто ж будет с рвением работать на дяденьку :)
| |
|
3.31, Неиван (?), 16:15, 25/02/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
> И что, ты не запатчишь 40 кривых использований указателей за час например?
Ну, некоторые люди не просто перед каждым обращением указателю пишут "if (!p) return -1" (как это, вероятно, делаете вы) а изучают код и выясняют, почему же указатель оказался нулевым хотя не должен, и исправляют ошибку там, где она возникла, а не там, где проявилась. За полторы минуты этого не сделать.
И, да, я думаю, что имеются ввиду не 40 одинаковых строк в одной функции, а 40 указателей, разбросанных по всему проекту.
| |
|
4.69, arisu (ok), 23:09, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
особенно интересно, как это выяснит система анализа, у которой вообще мозгов нет, только набор правил. я так сильно подозреваю, что починили десяток реальных ошибок и вставили кучу ненужных проверок, чтобы эта дура заткнулась уже и не нервировала.
| |
|
5.97, Кирилл (??), 02:37, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
"Мозги" такие же, как у человека -- находит находит подобие в заданной базе образцов.
| |
|
6.224, arisu (ok), 14:14, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
нененене, господа модераторы. тут нам только что не напрягаясь решили основную проблему AI, а вы сообщения удаляете. ведь, оказывается, чтобы сделать эмулятор мозга — достаточно уметь находить подобие в базе образцов!
| |
|
7.236, Кирилл (??), 17:30, 28/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Да. Но не только. Нужно ещё эту базу образцов составить, т.е. "научить". Сколько там ребёнка ложку учат держать, а читать-писать? Будет ли экономически выгодной система на обучение которой уйдут десятки лет? Сделать "эмулятор мозга" (т.е. саморазвивающуюся адаптивную систему) трудно не логически, для этого вся математика есть, а чисто физически сложно добиться такой плотности связей и такой чувствительности, а значит способности к обучению.
| |
|
|
|
4.207, Аноним (-), 10:43, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Ну, некоторые люди не просто перед каждым обращением указателю пишут "if (!p)
> return -1" (как это, вероятно, делаете вы)
Не, ну что это за жирный троллинг? Вам не кажется что потоньше троллить надо?!
| |
|
|
2.40, тоже Аноним (ok), 17:34, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Возможно, ряд ошибок решался примитивной автозаменой - никто же не сказал, что ошибки были разными.
| |
|
3.50, Ytch (?), 20:13, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Возможно, ряд ошибок решался примитивной автозаменой - никто же не сказал, что ошибки были разными.
Добавьте к этому, что одно конкретное "плохое" место в коде может "выдавать" десяток ошибок (да еще и совершенно разнородных), так что переписав один кусок (возможно даже небольшой) удается избавиться от пары десятков ошибок разом.
| |
|
4.66, тоже Аноним (ok), 23:06, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Ну, статический анализатор и должен показывать как раз это место, а не те места, где оно используется. Разве что "это место" - шаблон.
| |
|
|
2.68, pavlinux (ok), 23:07, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней
> Вот это производительность труда! Они устраняли 40 дефектов в час! Или там
> просто штат очень большой?
Не, там ашипки типа
while (1) {
for ( i = 0; i > 0; i++);
if ( i = NULL );
printf(%d, 3.15159265);
else
goto exit();
}
Уже 10 штук :)
| |
|
1.9, qux (ok), 14:32, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на выхлоп никто не смотрит, Werror не использует?
| |
|
2.38, xxx (??), 17:20, 25/02/2012 [^] [^^] [^^^] [ответить]
| +2 +/– |
Видел ли ты что мимо IAR проходит? Там вообще такое ощущение что разработчики компилятора наркоманы и стандарт Си на косяки перевели. У меня теперь в практику вошло, весь код пришедший с IAR прогонять через GCC и Clang'овский статический анализатор. Clang кстати тоже многие интересные моменты замечает, что GCC пропускает.
| |
|
3.52, Ytch (?), 20:27, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> У меня теперь в практику вошло, весь код пришедший с IAR прогонять через
> GCC и Clang'овский статический анализатор. Clang кстати тоже многие интересные моменты
> замечает, что GCC пропускает.
А как вам это удается, если не секрет? Я давненько не имел дел с IAR'овскими компиляторами, но раньше, помню, натравить что-то, кроме IAR, на проект сделанный конкретно под IAR было весьма проблематично в силу огромного числа платформо-специфичных и сильно-iar-специфичных конструкций (а без них iar выдавал такое, что без слез не взглянешь). Любая утилита и/или компилятор спотыкались и отваливались на таких штуках и без суровой правки исходников их нельзя было использовать.
| |
|
4.93, xxx (??), 01:39, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> А как вам это удается, если не секрет?
Сейчас там в IAR в основном все специфичные вещи запиханы в #pragma, которые GCC тупо игнорирует. Ну или мне пока очень везет=) Мне обычно и не надо, чтобы код с IAR собрался достаточно на warning и error поглядеть. А так да, приходится портировать. Просто весело когда кроме специфичных для компилятора #pragma или ещё чего вылезают вещи которые не совместимы с жизнью и IAR это лихо проглатывает.
| |
|
3.53, Ytch (?), 20:44, 25/02/2012 [^] [^^] [^^^] [ответить] | +/– | По моему скромному опыту, абсолютный рекордсмен и чемпион в этом сомнительном де... большой текст свёрнут, показать | |
|
4.96, xxx (??), 02:37, 26/02/2012 [^] [^^] [^^^] [ответить] | +4 +/– | Я уже давно стал полным сторонником того, что проприетарные средства разработки ... большой текст свёрнут, показать | |
|
5.99, VoDA (ok), 02:49, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Или наоборот наберут бывших явистов для которых элементарные понятия
> цифровой схемотехнки и электроники или беззнаковые типы и ограничение в 1Кб
> памяти - rocket science.
Странные джависты, что джаву на С или С++ меняют. Возвожно как джависты не смогли адекватно работать, вот решили что С легче будет. Наивные =)))
PS хорошо отношусь к С и С++ разработчикам, но знаю что это другое множество задач ;)
| |
5.191, Ytch (?), 01:24, 27/02/2012 [^] [^^] [^^^] [ответить] | +/– | У меня, в этом смысле, аналогично С некоторыми а может и всеми сигнальниками... большой текст свёрнут, показать | |
|
6.218, arisu (ok), 14:00, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> По поводу «молодых» — ситуация полностью аналогичная. Либо «профильные» ребята, но с
> программированием туго, либо «программисты», но настолько «объектно-ориентированные»
> и/или далекие от «железа», что нужны годы, чтоб из оставшихся вышел
> толк в нашем деле.
если бы только у вас так… проблема с нормальными сотрудниками. «— Летать не умеют, стрелять — тоже пока не умеют. Но — орлы!» то есть, денег хотят как орлы, и чтобы при этом их отходы жизнедеятельности считались полезной работой.
| |
|
|
4.208, Аноним (-), 10:45, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> это TI CodeComposer Studio. Включить его в strict-режим невозможно - он
> прекращает компиляцию найдя более определенного количества ошибок (точно не помню сколько,
> но много). Ирония в том, что при этом он так и
> не доходит до ваших файлов - эта тьма ошибок (для strict-режима)
> уже в их собственных файлах.
Что ж ты от проприетарщиков то хотел, дяденька?
| |
|
|
2.113, pavlinux (ok), 05:45, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на
> выхлоп никто не смотрит, Werror не использует?
#include <stdio.h>
#include <string.h>
const char *TEXT = "123456789";
int main()
{
char a;
if (strlen(TEXT) > 20)
a = 'A';
if (strlen(TEXT) < 10)
printf("%d\n", a);
return 0;
}
$ gcc -W -Wall -Wextra -Werror -Wunused -Wuninitialized test.c
Молчит тварь :)
| |
|
3.115, arisu (ok), 06:16, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
а с чего бы ему вякать, если неинициализированные глобальные статики попадают в BSS, которая по-умолчанию инициализируется нулями? перемести 'a' в main() и убери static — сразу заорёт.
ты как первый раз замужем, честное слово.
p.s. опа, успел код поменять. забавно: a всегда инициализировано, причём значением из первого условия — если собирать с -O2. а если с -O0 — то там как и полагается бредятина. выверты gcc…
и да: молчит, зараза.
| |
|
4.118, pavlinux (ok), 06:24, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> перемести 'a' в main() и убери static — сразу заорёт.
А может сразу инициализировать, хрен ли мучатся?!
Есть пример. Рабочий! Глючный! Умнож такую багу
на десяки тыщь строк, и ищи её там...
| |
|
5.120, arisu (ok), 06:25, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
а ты тоже сразу отвечать не спеши, у меня волшебная кнопка редактора работает.
| |
|
6.209, Аноним (-), 10:47, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> а ты тоже сразу отвечать не спеши, у меня волшебная кнопка редактора
> работает.
Соревнуетесь кто кого техничнее поднае... редактированием? :)
| |
|
|
6.123, pavlinux (ok), 06:29, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> p.s. в любом случае за такой код надо тестикулы отрывать.
А в таком примере, переменная "a" может уползти далеко,
за 3-4 функции, через 5 файлов,... а если это библиотека,
которую использует другая библиотека, так ваще жо..а.
| |
|
7.125, arisu (ok), 06:35, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
just don't do that. есть же хорошая практика: изначально присваивать переменной чушь и assert'ить. ну, и assert'ить на предмет соблюдения контрактов, конечно. «и много-много макросов детишкам принесла…»
| |
|
|
|
4.122, pavlinux (ok), 06:27, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> а с чего бы ему вякать, если неинициализированные глобальные статики попадают в
> BSS, которая по-умолчанию инициализируется нулями? перемести 'a' в main() и убери
> static — сразу заорёт.
> ты как первый раз замужем, честное слово.
> p.s. опа, успел код поменять. забавно: a всегда инициализировано, причём значением из
> первого условия — если собирать с -O2. а если с -O0
> — то там как и полагается бредятина. выверты gcc…
> и да: молчит, зараза.
char *a;
if (strlen(TEXT) > 20)
a = "A";
if (strlen(TEXT) < 10)
printf("%d\n", ++a);
А вот так SEGFALT словим
| |
|
5.141, qux (ok), 13:24, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Тогда или ++(*a), или %p и отсутствие сегфолта, не?
Во втором случае оно еще и ругается уже.
| |
|
4.124, pavlinux (ok), 06:33, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> забавно: a всегда инициализировано, причём значением из первого условия
:)
| |
|
|
2.137, Df232z (ok), 11:59, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на
> выхлоп никто не смотрит, Werror не использует?
Все просто - не инициализированные переменные активно используются.
Есть специальная техника - туннелирование.
Позволяет передавать значения переменных в функцию без дополнительных затрат времени.
Выглядит это вот так:
#include <stdio.h>
void f1(){
int a = 100;
a++;
}
void f2(){
int b; /*!*/
printf("Sure 101 = %d",b);
}
int main(){
f1();
f2();
}
Очень активно используется в ядре линукс. Также почти все звуковые драйверы написаны подобным образом, но это скорее по историческим обстоятельствам.
Метод работать то работает, только надежности не прибавляет.
| |
|
3.140, qux (ok), 13:18, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Где оно в ядре, взглянуть можно для интереса? Пытался найти, не получилось, -Wno-uninitialized например только в одном месте, не звук.
| |
|
4.149, Df232z (ok), 14:23, 26/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
Кому нравятся ругань компилятора?
Правильно - никому.
Так что починим?
Правильно - нет.
Костылик вот наш ответ.
>>linux-3.3-rc5
/*
* A trick to suppress uninitialized variable warning without generating any
* code
*/
#define uninitialized_var(x) x = x
Ну ты понял.
Кстати ответ тем кто считает, что компилятор нам спасет от всех напастей.
| |
|
5.154, arisu (ok), 14:37, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
и что это должно продемонстрировать? что компилятор неидеален, и иногда его ворнинги надо насильно затыкать? Кэп, мы в курсе. а просили мы продемонстрировать то, что ты назвал «тунелинг» и на голубом глазу утверждаешь, что в ядре оно «очень активно используется». поскольку ты так уверен — у тебя не должно быть затруднений с приведением хотя бы пары десятков мест, где это используется (хотя для «активно» надо бы сотни как минимум, да уж ладно…)
| |
5.161, qux (ok), 15:01, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Прикольно. Но еще бы передачу между функциями увидеть.
Хотя не понял, как это работает. Если использовать для глобальной переменной, то gcc выдает ошибку "initializer element is not constant". А для автоматической переменной почему не так? Компилит молча с "gcc -O0 -g -Wall -Wextra -pedantic --std=c90".
clang тоже молча собирает (с дефолтными опциями). С --analyze отлавливает.
| |
|
|
|
6.221, arisu (ok), 14:06, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> эй, а разве static переменные внутри функции не в ноль
> инициализируютя по умолчанию ?
а вот кстати не помню. ау, у кого там стандарт под рукой?
| |
|
7.228, qux (ok), 16:03, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
А кстати да. То есть работать должно нормально, хоть стиль и.. хромает.
If an object that has static storage duration is not initialized explicitly, it is initialized implicitly as if every member that has arithmetic type were assigned 0 and every member that has pointer type were assigned a null pointer constant.
| |
|
6.229, Noname (??), 17:36, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
>>> Где оно в ядре, взглянуть можно для интереса? Пытался найти, не получилось,
>> Ну вот напрямер http://lxr.linux.no/#linux+v3.2.7/drivers/xen/xen-selfballoon.c#L155
>> На 151-ой строке объявляют и не инициализируют cur_frontswap_pages,
>> static unsigned long cur_frontswap_pages;
> эй, а разве static переменные внутри функции не в ноль
> инициализируютя по умолчанию ?
Практически везде в 0, но это скорее костыль чем фича. :)
| |
|
5.219, arisu (ok), 14:03, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
человек имел в виду совсем другое. он утверждает, что в ядре активно используется хак с неявной передачей локальных переменных через стек. вот мы хотим видеть доказательства сего утверждения. твой пример — он совсем из другой оперы, тут и стек-то не задействован.
| |
|
|
3.147, arisu (ok), 14:09, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
на самом деле даже средней тупости оптимизатор понаделает тут мегапроблем. что, кстати, было известно давно, чуть ли не с момента появления оптимизирующих компиляторов.
кстати, а где в пингвинусе это активно используют? не трололо для, просто интересно. самому рыть исходники долго и лениво, а ты, судя по всему, уже в курсе.
| |
3.177, Xasd (ok), 18:07, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Позволяет передавать значения переменных в функцию без дополнительных затрат времени.
> ...
> Очень активно используется в ядре линукс. ...
если это используется хотябы гдето [я имею ввиду серъёзные проекты, а не на домашней странице Васи Пупкина] -- то я очередной раз очень разочаруюсь в жизни :-(
| |
|
4.179, arisu (ok), 18:12, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> если это используется хотябы гдето
раньше использовалось. тю, сам использовал ещё во времена DOS — даже с разрешёнными прерываниями.
| |
|
3.195, pavlinux (ok), 05:45, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Очень активно используется в ядре линукс.
Ага, щаз, сто тыщь раз...
gcc -fipa-pure-const test.c
./a.out
101=0
-fipa-pure-const входит во флаг -O, а линуховый дефолтный -02
Так что, слово "активно" совсем не уместно.
| |
|
4.220, arisu (ok), 14:05, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
т-с-с-с. ну что ты всё ломаешь? щаз обидишь его, и он не скажет, какие именно участки ядра надо переделать. а я хотел потом втихаря патчей заслать и выпендриться, сколько багов починил!
| |
|
3.234, netch (ok), 16:53, 28/02/2012 [^] [^^] [^^^] [ответить] | +/– | Это должно работать очень ненадёжно Gcc любит оптимизацию работы со стеком след... большой текст свёрнут, показать | |
|
4.235, arisu (ok), 17:05, 28/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Ну теперь я не удивляюсь тому, как в Linux относятся к звуку.
нашёл кому верить. видишь же: на просьбу показать конкретный код чувак слился и не отсвечивает.
| |
|
|
|
1.10, Bizdelnick (?), 14:32, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Перечитал первый абзац 5 раз. Так и не понял, как из 0,45 и 0,64 можно получить в среднем 1.
| |
|
2.20, Pahanivo (ok), 15:03, 25/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Перечитал первый абзац 5 раз. Так и не понял, как из 0,45
> и 0,64 можно получить в среднем 1.
читать надо учится ...
первые два числа взяты в результате тестирования КОНКРЕТНЫХ ПРОДУКТОВ
последнее - ПО ОТРАСЛИ В ЦЕЛОВ
| |
2.21, Антон (??), 15:04, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
А запросто. 0.45 и 0.64 -- это усреднение по проектам, а 1.0 -- по всем строкам всех проектов (сказывается вклад низкокачественных проектов с большим числом строк).
| |
|
|
2.54, Аноним (-), 20:45, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Где пометка «На правах рекламы»?
Coverity абсолютно бесплатно тестирует все проекты под открытыми лицензиями, нужно только заявку написать.
| |
|
3.73, pavlinux (ok), 23:15, 25/02/2012 [^] [^^] [^^^] [ответить]
| –2 +/– |
Мы без них потестируем. Пущай код отдают.
А то блин всё проверят, а самое вкусное покажут только ФБР, АНБ и ЦРУ.
| |
|
|
1.34, Buy (??), 16:19, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
> Например, команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней
Вот я хотел услышать о команде разработчиков ядра линукс :) , но об этом дипломатично промолчали. Значит плохи дела... :))))
| |
|
2.41, тоже Аноним (ok), 17:38, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Вот я хотел услышать о команде разработчиков ядра линукс
Вы хотели услышать, что в ядре Линукс до сих пор была россыпь ошибок, на устранение каждой из которых в среднем требуется несколько секунд?
Так вот, таких ошибок там не нашлось. Что вас в этом расстраивает?
| |
|
3.57, Аноним (-), 21:19, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
"Не нашлось" это синоним "нет вообще"? Тогда почему ежемесячно обновляются ядра, не подскажешь? Или все-таки будем реалистами?
| |
|
4.71, тоже Аноним (ok), 23:11, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Ну, так и будьте реалистом, а не пустословом.
Устранение ошибок отнюдь не означает, что они были такими тривиальными, что их может обнаружить даже компьютер (речь об этом).
| |
4.72, arisu (ok), 23:11, 25/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Тогда почему ежемесячно обновляются ядра, не подскажешь?
ChangeLog знает.
| |
|
|
|
|
|
3.61, Аноним (-), 22:24, 25/02/2012 [^] [^^] [^^^] [ответить] | +/– | По собственному опыту могу сказать, что в большинстве случаев, т н ревью кода... большой текст свёрнут, показать | |
3.196, anonymous vulgaris (?), 06:18, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> С появился, как ответ на определенную ситуацию,
Си появился поскольку у авторов было желание запустить убогий простаивающий в углу никому не нужный комп. Лучше бы оно потратили время на выбивание у начальства денег на мейнфрейм с нормальными языками от IBM.
>в точности также, как позднее и С++.
Конечно же совсем не так.
> Я думаю, что разработчикам С/С++ компиляторов нужно делать больший упор на анализ, чтобы такие ошибки можно было отлавливать если не прямо в IDE, то хотя бы на этапе компиляции.
Системам статического анализа 100 лет. Посмотрите lint например. Lint first appeared (outside of Bell Labs) in the seventh version (V7) of the Unix operating system in 1979. Не помогает.
| |
|
|
|
2.78, arisu (ok), 23:31, 25/02/2012 [^] [^^] [^^^] [ответить]
| +4 +/– |
это же Director of Product Marketing: они органически неспособны правду говорить.
| |
|
3.189, arisu (ok), 23:28, 26/02/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> чувак, тетке около 45.
а на вид ягодка. сразу видно — ни для честно не работала, только трудовой люд обманывала.
| |
|
|
|
|
3.166, Аноним (-), 16:06, 26/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
Начинаю. Библиотека Qt - это неплохая поддержка для "голого" С++. Сравнивать C# и java нужно именно с Qt, а не с C++.
| |
|
4.167, arisu (ok), 16:14, 26/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Начинаю. Библиотека Qt - это неплохая поддержка для "голого" С++. Сравнивать C#
> и java нужно именно с Qt, а не с C++.
ну и с чем тут спорить? ты что-нибудь провокативное вкидывай.
| |
|
5.199, вкидывают (?), 09:21, 27/02/2012 [^] [^^] [^^^] [ответить]
| +2 +/– |
> ну и с чем тут спорить? ты что-нибудь провокативное вкидывай.
"PHP - глобальное и надежное решение для серьёзного бизнеса, а на сипипи пишут лунупсоеды-недоучки за еду"
| |
|
6.223, arisu (ok), 14:08, 27/02/2012 [^] [^^] [^^^] [ответить]
| +/– |
> "PHP - глобальное и надежное решение для серьёзного бизнеса, а на сипипи
> пишут лунупсоеды-недоучки за еду"
уйди, мы тут о Qt!
| |
|
|
|
5.222, arisu (ok), 14:07, 27/02/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Сравнивать языки принято с языками. а библиотеки с библиотеками. Выше было.
ок. тогда от жабы отдираем JVM, а от c# .Net. никак иначе. это — рантаймовые *библиотеки*.
| |
|
|
|
|
1.237, stimpack (?), 19:06, 28/02/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
почему не проанализировали plan9? это ж цитадель высокой мысли и идеальных решений, настолько идеальных, что аж сферических. пишут ли там с ошибками? (прости господи меня за такое вольномыслие)
| |
1.239, Аноним (-), 01:04, 03/03/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Иногда такие быстрые исправления ошибок просто пужают.
Вон, несколько лет назад, valgrind показывал, что в OpenSSL неинициализированная переменная, Debianовцы "исправили" ошибку, и всё было хорошо. А потом оказалось, что исходные переменные для создания ключей стали прогнозируемы.
| |
|