- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
https://github.com/dotnet/coreclr/blob/a589e3926a1780256fdb52376f8681fe047daf54/src/vm/i386/cgenx86.cpp#L1551-L1553
PAL_TRY(Param *, pParam, ¶m)
{
unsigned char buffer[16];
DWORD* dwBuffer = NULL;
DWORD maxCpuId = getcpuid(0, buffer);
if (maxCpuId < 1)
goto lDone;
dwBuffer = (DWORD*)buffer;
if (dwBuffer[1] == 'uneG') {
if (dwBuffer[3] == 'Ieni') {
if (dwBuffer[2] == 'letn') { // get SMT/multicore enumeration for Intel EM64T
С каких пор в одинарные кавычки можно писать больше одного символа? Это какое-то MSVC или что?
С педантиком ругается, но компилируется и работает нормально
> 6) Multicharacter literal, e.g. 'AB', has type int and implementation-defined value.
Я бы конечно не стал использовать implementation-defined фичу без необходимости.
Да даже в C89 эта херня уже была задокументирована.
выводит 61626364 64636261
А вот такая вот хрень:
Дает в плюсах:
1
4
4
4
т.е. символьный литерал в плюсах не всегда однобайтный, но восьмибайтным он никак не становится
memcpy(&b, "dcba", sizeof(b));
зато блин операторы +-*/ и пр. для SSE сделать видимо пипец как сложно
Известно что некоторая операционная система не дает программам поступа к debug регистрам: и через ptrace из никак не изменить, потому она не уязвима для CVE-2018-8897.
Однако на ней как-то работает gdb и делает watch (memory breakpoint)
Вопрос: как?
просто в linux-то это не так.
Там в "asm/user.h" есть u_debugreg и его через PTRACE_POKEUSER ставят
просто API у юниксообразных обычно такой:
1) дебагер берет ptrace и просит ядро писнуть в DR у дебаги
2) ядро пишет
3) ядро ловит debug exception
4) ставит дебагера в известность
Хз как DbgHelp работает у Win, но думаю что так же.
Ну вот одна OS вдруг не имеет API для установки DR* через ptrace, я и задумался как же они жвут
>>грубая сила
это же пездец как медленно, не?
Всё, что эту страничку задевает, будет медленно крутиться на синглстепе. Остальной код в общем-то лагать не будет.
З.Ы. А может у них просто какое-то своё расширение ptrace для таких бряков?
так страница-то 4К (если не huge/large -- тогда еще больше)
я за один сраный uint32 на стеке буду страдать, ох
>> А может у них просто какое-то своё расширение ptrace
В доке не видать:)
Всё то я знаю это что
1) userspace apps can't access debug registers (инфа почти 100% ибо от кордевов)
2) gdb там умеет watch
буду смотреть сырцы, имею подозрение что они инструментят код увставляя int 3 перед mov: то-есть так же, как софтварные брекпоинты.
Да не, маловероятно, каждая вторая команда же в память лезет... И мы не знаем, какая из них может задеть нужный адрес. Это будет лагать даже хуже чем мой вариант со страничками.
https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html
Depending on your system, watchpoints may be implemented in software or hardware. GDB does software watchpointing by single-stepping your program and testing the variable’s value each time, which is hundreds of times slower than normal execution. (But this may still be worth it, to catch errors where you have no clue what part of your program istyp the culprit.)
Короче, вот ответ: на obsd (речь шла о ней, как ты наверное догадался) хардварных брекпоинтов нет а вотчи там софтварные.
Это один из десятков примеров того что linux использует интел-специфик штуки, а бздуны лозжат на них хуй
https://sourceware.org/gdb/onlinedocs/gdb/Set-Watchpoints.html
Depending on your system, watchpoints may be implemented in software or hardware. GDB does software watchpointing by single-stepping your program and testing the variable’s value each time, which is hundreds of times slower than normal execution. (But this may still be worth it, to catch errors where you have no clue what part of your program istyp the culprit.)
Короче, вот ответ: на obsd (речь шла о ней, как ты наверное догадался) хардварных брекпоинтов нет а вотчи там софтварные.
Это один из десятков примеров того что linux использует интел-специфик штуки, а бздуны лозжат на них хуй
Я просто вдруг осознал что не все умеют debug регистры (да и интел раньше не умел) и задумался как же тогда работает watch.
Про то, как делают софтварный брейк (заменяют вызов на 0xCC кторый INT 13h) я знал а как делают софтварный watch (aka data breakpoint) я не знал, ну вот оказывается сделают через пошаговое выполнение (не быстро!)
пишешь туда адрес, и процессор вызывает прерываение когда по этому адресу обращается
https://en.wikipedia.org/wiki/X86_debug_register
Но не все ОС это позволяют, и не все платформы.
Дебаг регистры не у всех процессоров есть
Где это я отвечаю сам себе?
Борманд сидит под несколькими учётками, в том числе и под этой. Когда ему становится скучно, он ведёт просветительскую работу, общаясь сам с собой.
Значит, раньше бароп сидел под гостем и гостезаменителями.
3) ну еще я лично смотрел на структуру которую можно передать в ptrace: там куча регистров (даже r* есть для amd64) но вот dr* нет
инструментить можно тоже не всегда же?
если я там адрес переменной положил в int, тудасюда его помножил то уже не понятно что тот адрес значит
Иными словами, тебе это никогда не нужно
Оператор && там не проходили?
Это тоже
Если 1 условие не выполняется, то проверять 2 других не имеет смысла, со 2-м условием то же самое. Ленивость в Си(в плюсах же тоже, да?) не завезли.
А я думал, что в Си такого ещё не было. И что так было всегда?
по крайней мере в 90х (c89?)он уже был
Любой DSL. У нас в одном проекте был DSL для конструирования запросов к хранилке, что-то вроде Т.е. по сути тут манипуляция AST запроса, она должна быть неленивой.
Куда высылать баг-репорты к бесконечному стоку Борманда? Желательно бесплатно, без регистрации, анонимно и без СМС.
https://i.imgur.com/TOxEnQS.png
Это я случайно Ctrl+Enter нажал, потом поправил. Пока новый коммент не появился, сток не обновился.
Самозванец!
А всякая околокомптютерная хипстерская тусофка: там дизайнеры, блогеры, пхперы, фронтэндеры итд -- они не знают, ну им и не надо
2) остальное вытекает из первого
:
написал такой мини код для проверки отклика от сокета
if (false !== ($bytes = socket_recv($sock, $buf, 2048, MSG_WAITALL))) {
echo "readed $bytes bytes from socket_recv(). close...";
} else {
echo "Dont can read becouse " . socket_strerror(socket_last_error($sock) ) . "\n" ;
}
socket_close($sock);
Получил такой вот такой странный результат
"Dont can read becouse Операция успешно завершена."
т.е. сработала ветка с не выполненным условием однако результат (ошибка) пишет что все успешно завершено
может кто то подсказать где у меня ошибка?
и еще один вопрос можно как то настроить кодировку отдельно взятой строки? (сайт на utf 8 а отклик с сокета пришел в windows 1251)
Donc merci beaucoup!
> можно как то настроить кодировку отдельно взятой строки?
В php.ini
Зачем? один раз запомнить, в каком файле и в какой строчке нужно сконвертировать, и добавить станцунеужели ты подумал, что я в серьёз про php.ini???
Устанавливать через менеджер пакетов, разумеется?
Нет смысла думать плохо о целом языке, ориентируясь на единичные вопросы такого уровня.
Найди там хоть один серьезный вопрос
Человек с ником "Фанат" в этом говноклубе тусит уже 20 лет. Он еще в 2003м там уже был за главного.
И вот он в 2017м году рассуждает в таких выражениях "Вот смотрю я на аннотации и мне кажется, что это какое-то извращение.
Но, как Василь Иваныч, нутром чую, а доказать не могу."
Заебись анализ, правда?
а по пхп все такие
Какой багор )))
ЗЫ. В компиляторе DigitalMars, вроде бы, есть либа gc.h и gc.dll, но я её особо не изучал.
ну вот ты сидишь на сайте LAMP: Linux, Apache, PHP, MySQL.
Угадай, на чем написаны эти четыре предмета?
Попробуй устроиться на работу "сишником" и расскажешь об опыте.
Зачем мне это сравнивать?
Довольно очевидно что джавистов больше, а пхпшников еще больше, а а пишущих на Verilog людей меньше. Что это доказывает?
>>просто этот софт ты не видишь.
Я знаю что дофига софта на джаве написано и не спорю с этим
>>Попробуй устроиться на работу "сишником" и расскажешь об опыте.
А, ну если мы сравниваем количество вакансий то ты прав конечно: си тут проигрывает. Но тогда надо говорить про JavaScript или про PHP: их будет больше.
Вообще программирование говно, потому что вакансий курьера гораздо больше, и кстати устроиться туда куда проше
Ок, что там со стандартной библиотекой?
см про курьера
>>Ок, что там со стандартной библиотекой?
ну она лучше чем у JavaScript, например
зы: я, кстати, ни разу не защищаю си: в нем говна предостаточно, но сравнивать языки разного уровня по количеству вакансий это, конечно, феерия
>
> ну она лучше чем у JavaScript, например
Это по каким критериям?
Именование - в стиле Вонни; функциональность - практически в зачаточной стадии. Консистентности нет.
OK, без f - в консоль, с f - в файл, с s - в строку:
Набор *printf/*scanf - print vs scan.
* Но! Для строк и символов - put vs get.
* Но! Строка формата ни черта не соответствует, %* в print/scan значит разное; %f для double и %d для char printf прощает.
Ладно, давайте читать символ. Мы знаем, что без f - в консоль, с f - в файл, с s - в строку.
Но строку в строку можно записать только с помощью Вонни-функции strcpy или явно с sprintf("%s"....
Хорошо, считаем из консоли/файла. Из файла всё читается как надо, а из консоли - только со срывом буфера. Разница - в одном сраном параметре.
В *scanf считать нужное количество символов можно, но нужно вкорячивать его в строку формата! В то время, как *printf умеет передавать ширины через аргументы.
Ладно, со строками не сложилось. Ну хоть символ-то можно считать без пердолинга.
Итак, без f - в консоль, с f - в файл:
ЧИВО? Вы издеваетесь? А как считать из консоли?
getchar.
До какого символа считывается строка? *scanf - до пробельного, fgets - до конца буфера или \n, gets - до срыва буфера. Консистентность есть? Нет. Настраиваемость? Нет.
Регулярки? Нет, только диапазон символов в *scanf.
Строки? Набор Вонни-функций для пердолинга памяти.
Массивы может есть? Нет, только набор Вонни-функций для пердолинга памяти плюс ручная передача размера.
И это лучше, чем в JS? В каком подвале Вас держат сишники, дайте нам знак?
Так printf не знает какого типа значения ему были переданы.
> Из файла всё читается как надо, а из консоли - только со срывом буфера
Никто не запрещает читать с консоли fgets'ом, а gets вообще не рекомендуется использовать.
> В *scanf считать нужное количество символов...
fgets, fread
> До какого символа считывается строка?
Если не нравится, читай посимвольно
> Набор Вонни-функций для пердолинга памяти.
Си для этого и создан.
Да, библиотека говно. Но есть ли у кого-то лучше? (для тех же целей) Rust? Go? (мне кажется, что говном можно полить всё, что угодно)
А в чем, кстати, проблема сделать макрос?
>> Набор Вонни-функций для пердолинга памяти.
>Си для этого и создан.
Так я это и пытаюсь втолковать человеку.
да, говнецо
а напомни мне пожалуйста как кросс-платформенно вывести что-то в stderr в javascript?
Работает практически везде.
Ещё можно
в Node.js, и будет кроссплатформенно. Node.js работает на большой тройке ОС и вроде ещё в андроиде.
и завешает работу программы
впорос был как написать что-то в сдтерр
>>в Node.js,
нод джс это всего лишь одна реализиация
а вот под WSH не сработает: там надо по-другому писать
и под asp classic тоже
потому что спецификации языка такой функциональности нет
а в си есть)
Уж лучше, когда где-то конкретно, но работает как надо, чем работает везде, но коряво (с ID, UB, переменными неизвестного размера).
> впорос был как написать что-то в сдтерр
process.stderr.write
Работает, пишет.
И регулярки без смс и регистрации работают.
лолчто
Стандартная сишная либа это просто эталон пиздеца. Попробуй перечислить файлы в каталоге кроссплатформенно, ага.
Кинуть HTTP запрос к серваку и готово.
Кстати, а как кросс-платформенно кинуть стандартный запрос к HTTP серверу?
>языки разного уровня
Так я тебе и говорю, что си - низкоуровневое говно, за пределами драйверов практически не нужное.
Да и в пределах драйверов его юзают в основном по традиции.
Виртуальные методы? Шаблоны?
Не смешно. Посмотри сколько структурок-с-указателями в том же ядре линукса.
> Шаблоны
Вай нот?
Да и RAII ещё никому не повредило.
Да, это тот самый "ооп без ооп". Ты вкурсе же что Линус думает про С++, кстати?
>>Вай нот?
Окей, C vs C++ это другая тема, у меня нет тут strong opinion потому что таки да: почти все, написанное на си, можно заменить на плюсы (кроме vla и еще там всяких void * без кастов).
Я возбудился изначально на заявление что си не нужен, и давайте писать всё на JavaScript и PHP.
Кого ебёт, что думает Линус?
Меня ебет что думает pedikulez_v3 и syoma.
В листке из бухгалтерии у меня написана только общая сумма. Там не сказано какой процент из нее приходится на использование каждого из языков или технологий, с которыми я сталкиваюсь.
Не очень понятно причем тут я, конечно: у меня есть коллеги которые пишут на С++ довольно много, при том что ваканский на JavaScript куда больше. Вот же странные люди
Ох блядь. Я бы не сказал, что знаю C, но с этим бы и я справился.
>пишут на С++
Мы же про C? Сколько на нем пишут?
То-есть С++ это не низкоуровневное говно? Только С низкоуровневое говно?
Это очень интересно. Возможно, скоро окажется что еще есть интересные проекты и интересные области, и замаячит на горизонте крамольная мысль что кроме разработки вебсайтов на ангуляре есть еще другие виды деятельности, и некоторые люди ими тоже занимаются.
Собственно говоря, сарказм не в жилу. Мнение конечных пользователей должно ебать больше, чем мнение причастных к истокам и навязывающих своё видение с высоты своего положения. К примеру, сейчас всем навязывают нахуй никому не сдавшиеся SSL-сертификаты под угрозой исключения из поисковых систем и присвоения пугающих значков, но это не значит, что все автоматически возлюбили весь этот воздух лишь потому, что так сказал великий "Google".
Именно. Потреблять-то эти языки наёмным программистам, а не quasi умным мужикам, случайно оказавшимся в нужном месте в нужное время (твой Линус вполне мог бы мыть унитазы в "Mc'donalds").
>>твой Линус
Он не мой, и я не согласен с его критикой C++.
Однако же если выбирать между мнением педикулёза и торвальса, то я боюсь что мнение последнего окажется для меня более интересным. Может быть я предвзят.
Ну, да, про него ведь есть статья в "Википедии".
Блджад! Ну охренеть объективный научный подход подход.
На самом деле, мнения педикулёза и торвальса одинаково важны. Оба этих мнения можно выбросить в мусорку, если они без нормальных аргументов, а мы не собираемся устраиваться к ним на работу. Каждое из этих мнений необходимо анонимизировать и прочитать вместе с аргументами не зная, кто его написал, чтобы авторитеты не заслоняли истину.
Например: Борманд считает что большинство лоу-левел кода можно переписать с си на си плюс плюс. Это умножается на тот факт, что у Борманда есть опыт с лоу-левел кодом и си плюс плюс, и потому его мнение мне интересно.
Кое-кто другой, никогда в жизни не работавший ни в каком проекте, где используется С или С++, и ни один из эти языков не знающий, сообщает мне что си это ненужное говно потому что по нему "меньше вакансий", а в те проекты, где си используется "нас всех все равно не возьмут".
Такое мнение для меня гораздо менее ценно.
Какие "объективные показатели"? Количество вакансий на hh.ru?
Я тебе еще раз говорю что во-первых на первом месте там будет PHP, во-вторых больше всего вакансий там будет вообще не программистских.
На самый худой конец можно выбрать фирму или проект, в которые ты хочешь попасть, и посмотреть что они используют.
Выбирать язык по количеству вакансий в Интернете я считаю неправильным, потому что иначе всем придется идти писать на 1с.
вот hh.ru за Москву:
14 971 вакансия «1с»
1 867 вакансий «java»
1 316 вакансий «php»
1 101 вакансия «c++»
По ним языки ранжированы так: 1С, Java, PHP, C++.
Значит-ли это C++ ненужное говно, PHP более нужное, а 1С это самый нужный и полезный язык?
Хочешь писать прикладные программы? Смотри C# как минимум. Ой, что, отсосала твоя сишка?
Значит.
Это значит, что C++ - сложное почти ненужное говно, которое никто не осилил, программа на котором будет стоить заказчики таких денег, за которые можно раз в полгода нанимать школьника, который напишет то же самое на PHP. Да, будет говнокод, но зато можно каждые полгода полностью менять требования, что в случае с C++ вылетит в копеечку.
TLS
>> под угрозой исключения из поисковых систем
Это не правда
>> нахуй никому не сдавшиеся
Конечно же сдавшиеся, особенно если на сайте есть личный кабинет
>Это не правда
В ранке гугля понижает
С другой стороны, использование TLS почти ничего не стоит ни в плане вычресурсов, ни в плане затрат времени.
http://www.azquotes.com/quote/1118318
Ты не поверишь, но прекрасно можно построить объектно-ориентированные API без ООП.
>>, за пределами драйверов практически не нужное
никакой язык не нужен, любой из них можно заменить на другой
>пук
Принеси мне области применения C, наконец уже.
>>Принеси мне области применения C,
Я наверху привел: операционные системы, базы данных, веб-сервера, интерпретаторы языков.
Низкоуровневое говно. Туда же дрова.
>базы данных, веб-сервера, интерпретаторы языков.
Мизерный спрос.
>Низкоуровневое говно. Туда же дрова.
По какому принципу ты определяешь что говно, а что нет?
Почему вебсайты не говно, а операционные системы говно?
>>Мизерный спрос.
Да, спрос меньше чем на JavaScript или 1С.
Я вроде с этим не спорил
Спрос меньше чем на любой другой язык: жава, c# итд
Си низкоуровневое говно, javascript выскоуровневое говно.
В целом программирование это говно
тоже говно, просто воняет не так сильно.
Тогда C - это что-то вроде совковой ракеты, которая еще каким-то чудом летает в космос, но скоро придет маск, который обвалит цены и она отправится на помойку истории.
Когда API операционок и популярный софт перейдут на раст, можно будет отправить си туда же, куда уже отправился паскаль.
Но пока что этого не произошло
Староверы.
Что программы на джаве писать легче, эффективней и выгодней для бизнеса, а на пхп - ещё дешевле и эффективней, а Verilog почти никому не нужен?
Делали языки (те, на которых реально пишут) не для демонстрации в музеях, а для работы. Если PHP бьёт рекорды, значит это как раз таки самый годный язык, который на практике лучше работает, а для других языков придётся долго учиться (5+ лет для Hello, world на C++), и ту же программу писать сложнее и дороже.
Или будем сравнивать языки по бесполезным теоретическим критериям вроде средней научной степени программиста?
Или назовём те языки, где нужно много пердолиться - хорошими? Чтобы чувствовался труд программиста, а не какая-то питонная фигня с вызовом пары функций, которые делают больше, чем тысяча строк кода на C. Тогда malbolge - идеальный язык.
(Конечно, в задачах, где нужен именно Верилог и где по каким-то причинам *ХДЛ нельзя использовать, Верилог будет на первом месте, но искусственные топы никого не волнуют.)
Мне не очень интересна средняя температура по больнице.
Для меня это всё равно что сравнивать профессии по популярности. Самая популярная профессия далеко не программист;)
Думаю что больше всего людей, называющих себя "программист" в моем городе пишут на PHP и 1С.
Это не значит что мне нужно срочно переквалифицироваться в 1С программисты.
Выходит книга рекордов Пиваса, где каждый первый - победитель. Один стометровку быстрее всех пробежал на ходулях с собакой на руках (потому, что никто больше такой хренью не страдал), другой - плюнул с трёх метров в тарелку с изображением лесов Австралии.
> Это не значит что мне нужно срочно переквалифицироваться в 1С программисты.
Конечно, не значит. Это значит, что 1C более востребованный, чем всякие бесполезные сиплюсы и хаскели, сколько бы пейсатели на них ни кукарекали.
Сук :)))
РКГ, ты ответь на такой вопрос: вот сидит какой-нибудь стертор на делфи. Вот ты сидишь на си. Чем ты его лучше?
я не понимаю что такое "сидеть на языке". Я использую более одного языка
чем javascript тоже, например (см пример с вкансиями)
Это же мечта пердолика. Поэтому у них и перл хороший, хотя вот это дейстительно говнище из прошлого века.
нет, это значит что задач для бизнеса, которые проще решить на PHP больше, чем задач которые проще решить на C.
Есть бизнес написания операционных систем.
Есть бизнес написания вебсайтов.
Есть бизнес продажи гамбургеров.
Мы смотрим на вакансии, узнаем что гамбурегов требуется больше, чем операционных систем, и на основе этого делаем вывод что операционные системы не нужны.
>>Или будем сравнивать языки по бесполезным теоретическим критериям
Языки нужно сравнивать с учетом конкретной задачи, иначе это сравнение бессмысленно.
Разумеется, вебсайт лучше написать на PHP чем на ассмеблере.
Разумеется, загрузчик в MBR лучше написать на ассемблере, чем на PHP.
Ну! А какие задачи проще решить на C?
>нет, это значит что задач для бизнеса, которые проще решить на PHP больше, чем задач которые проще решить на C.
Нужны, но писать за деньги тебе их не дадут. Без тебя разберутся.
Тебе правда еще раз перечислить? Ты кащенит может быть?
>>Нужны, но писать за деньги тебе их не дадут. Без тебя разберутся.
Вот с этого и надо было начинать: си используется в тех проектах, куда тебя не берут, а PHP в тех, куда тебя берут.
Потому разумеется для тебя PHP более ценен чем си.
>куда тебя не берут
И тебя тоже.
>для тебя
То же самое.
Это реинкарнация кого? Кегдана?
Твоя позиция мне ясна.
>области, в которых не разбираешься ты называешь "ненужным говном".
Технологии, на которые нет спроса, я называю ненужным говном. Я понятия не имею как ты пришел к своему выводу. Наверно, тебе просто очень хотелось к нему прийти.
Каким образом ты определяешь спрос?
Но ведь так и есть! Только соль в том, что надо было добавить слово "новых".
Мы смотрим на вакансии, узнаем что новых гамбурегов требуется больше, чем новых операционных систем, и на основе этого делаем вывод что новые операционные системы не нужны.
Один гамбургер нельзя перепродать миллионам покупателей, поэтому свежие гамбургеры всегда нужны. ОС можно сделать один раз и продавать всем.
> Языки нужно сравнивать с учетом конкретной задачи, иначе это сравнение бессмысленно.
Тогда языки становятся эквивалентными, ведь для каждого языка можно выдумать конкретную задачу. С помощью HQ9+ можно эффективно и кратко решить четыре задачи, в которых этот язык будет лучше всех. И что теперь? Это как американская толерантность, где в компании обязательно нужен один сишник, один жсник, один брейнфаковец и один прогарммист HQ9+, иначе нетолерантно.
Если сравнивать, то интегрально - по набору задач и с учётом эффективности.
Язык решает одну задачу, но идеально - годный язык.
Язык решает десяток задач, но хорошо - годный язык.
Язык решает нормально тысячи задач - годный язык.
Язык решает только одну задачу - говно.
Язык решает тысячи задач кучей кривого кода - говно.
нет, к сожалению ОС нужно поддерживать
>>Тогда языки становятся эквивалентными,
еще раз: надо плясать от задачи
Сначала выбирается проект, затем под него выбираются языки.
Платят же не за использование языка, а за создание проекта.
>>Язык решает только одну задачу - говно.
Не говно, если других языков для этой задачи нет.
С, кстати, решает более одной задачи: он используется более чем в одной области.
Да. И, соответственно, выбирается самый уместный язык под задачу. Берём большую долю реальных задач и смотрим, какие языки хорошо подходят. В итоге получаем список самых удобных в использовании языков для реальных задач.
Всякие единичные и редкие задачи в расчёт не берём потому, что (а) соответствие язык-задача для них статистически мало значит и (б) опыт таких проектов практически нельзя воспроизвести, там требуются люди, знающие 100500 разных языков (для которых не важно их сравнение), дело там не в конкретных языках, а в постановке задачи, архитектуре, расчётах, разведывании пути, по которому пойдёт проект.
>>Язык решает только одну задачу - говно.
> Не говно, если других языков для этой задачи нет.
На то был первый пункт:
>> Язык решает одну задачу, но идеально - годный язык.
Если язык решает одну задачу и не делает это идеально, то это не просто говно, это жуткое говнище. От универсальной питушни можно ожидать среднего уровня, но специализированный инструмент либо делает свою задачу качественно, либо выбрасывается к хренам.
> Угадай, на чем написаны эти четыре предмета?
Да хоть на XML. В позапрошлом веке книги вообще при свечах писали пером. Технологии, проверенные временем.
Чего комментарии на новомодном ПК строчите, давайте пером пишите.
Но если решим писать новые - посмотрим, на чём пишут серверы сейчас.