Какой язык программирования вам нравится и почему

ray144

Граждане форумчане, предлагаю обсуждение сего предмета: какой язык программирования вам нравится и почему? Т. е. именно нравится, а это не обязательно тот язык, на котором вы, скажем, ежедневно работаете.
Лично мне по душе C#; он для меня как C++, только доведённый до ума.
Конечно, там, где важна скорость работы приложения, приходится возвращаться на C++.

bleyman

Конечно, там, где важна скорость работы приложения, приходится возвращаться на C++.
Зачем?
Я бы еще понял - на чистый С.
HoLy wAr! hOlY WaR! A E!

evgen5555

Меня начинает Фортран интересовать, а еще Scheme.

mirt1971

И как же чистый С может генерить более быстрый код чем С++? Если взять задачу, написанную на чистом С(ну со всякими ручными приведениями типов итд для совместимости) и скомпилить ее С++, то будет медленнее? Смешно.

mirt1971

Да вы, батенька, некрофил

ray144

Я бы еще понял - на чистый С.
Ну, в общем, это и имелось в виду. Но C в чистом виде всё-таки не очень удобен: то const проскользнёт, то inline...

evgen5555

На этих языках вычислительные программы более удобочитаемые.

zontik

Язык для записи мыслей (марсиан) APL (a programming language) - Rulezz 4ever!
ЗЫ: конечно, его современные моификации (J programming language) тоже

mirt1971

Угу, угу. Раскажи это моей бабушке. Вычислительные задачи на любом языке абсолютно неудобочитаемы.

Ivan8209

Форт. Схема.
За краткость и читаемость.
---
...Я работаю антинаучным аферистом...

evgen5555

Не знаю, C# для этих целей как-то слабо подходит.

oleg_mcp

Haskell, поскольку это самый безумный язык.

maggi14

Интересно, если я скажу, что мне нравится Vastera Forte, мне поверят?
А если честно, то C++. Еще на меня произвел впечатление NesC под TinyOS, но я на нем не работал.

hoha32

Фортран шустрый. Факт.

mirt1971

Да кто с этим спорит? Я тут про удобочитаемость писал Фортран до сих пор популярен так как:
1) Много старого отлаженного кода(blas,lapack,...)
2) Есть высококачественные, высокооптимизирующие компиляторы(просто их дольше развивали )

bleyman

Если взять задачу, написанную на чистом С(ну со всякими ручными приведениями типов итд для совместимости) и скомпилить ее С++, то будет медленнее? Смешно.

Ну типа один из моих преподов по праку утверждал что да, будет быстрее. Мотивировал это тем, что бОльшие ограничения по синтаксису и семантике позволяют производить бОльшую оптимизацию. Я лично не проверял, но, возможно, он не гнал.
А ваще я имел в виду неиспользование ООП фишек плюсов. ну то есть странно говорить "Я пишу на плюсах", если ты из плюсовых фишек юзаешь только объявление локальных переменных где угодно.

Ivan8209

Не.
Я жадный.
---
...Я работаю антинаучным аферистом...

mirt1971

Эти ограничения минимальны. В основном вместо B* b = a; (где A* a) приходится писать B* b = (B* a ); И где тут возможны ограничения по скорости? Машинный код тот же. Единственный источник тормозов - rtti, exceptions. Но их можно отключать.

Ivan8209

В смысле большей возможности оптимизации преподаватель прав.
Только не все компиляторы об этом знают или хотят знать.
---
...Я работаю антинаучным аферистом...

mirt1971

Для С возможно больше оптимизаций? Пример в студию!

Ivan8209

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

Ivan8209

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

mirt1971

В смысле большей возможности оптимизации преподаватель прав.
Не ты писал? Честно говоря после этого даже говорить с тобой не хочется. Но все же: какие оптимизацие применимы в С и не применимы в С++. И поменьше общих слов.

oleg_mcp

С++ сам по себе источник тормозов без всяких RTTI. Всякие копирования объектов, виртуальные функции, деструкторы-конструкторы добавляют тормозов.

mirt1971

Обходись без них. С++ очень гибкий язык. Он не заставляет тебя всем этим пользоваться.

Ivan8209

>>> Ну типа один из моих преподов по праку утверждал что да, будет быстрее.
>>> Мотивировал это тем, что бОльшие ограничения по синтаксису и семантике
>>> позволяют производить бОльшую оптимизацию. Я лично не проверял, но,
>>> возможно, он не гнал.
Ты будешь утверждать, что приплюснутый Си более свободный, чем простой?
---
...Я работаю антинаучным аферистом...

oleg_mcp

Я обхожусь без С++. Да и вообще нах он нужен не понимаю - Микрософт его задвигает, а под Unix он никогда не был сильно популярным.

mirt1971

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

Ivan8209

Пра-ально. IPC рулит.
---
...Я работаю антинаучным аферистом...

mirt1971

Если ТЕБЕ он не нужен, то это не значит что он не нужен другим. Программы на С++ обладают огромными преимуществами по сравнению с С. Большая управляемость, надежность, простота,... Почитай классиков.

Ivan8209

> программу с незначительными изменениями
То есть, тебе приходится _переводить_.
Как ты думаешь, если у тебя есть куча, допустим, int, которые ты
временами используешь как char (или short то сколько ты их
сможешь удержать в именованной памяти?
Сравни с количеством удерживаемых данных типа char (short).
Напомню, что по умолчанию Си использует везде int.
То, что тебя научили программировать с учётом требований строгой
типизации, вопрос не меняет.
---
...Я работаю антинаучным аферистом...

janlynn

мне нравится asm_x86. просто прикольно

Ivan8209

Программы на Форте (Схеме, МЛ-е, Хаскелле) обладают огромными
преимуществами по сравнению с С++.
Большая управляемость, надёжность, простота...
Почитай классиков.
---
...Я работаю антинаучным аферистом...

mirt1971

Чегооооооооооооо? Бррррррееееееееедддддддддддддд! Какая еще в пизду именованная память? Какой еще int по умолчанию? Какие в пизду умолчания вообще? В сад! В ясли! Извини, не удержался.

Ivan8209

Мне категорически не нравится asm от x86.
Жуткий отстой.
Открой для себя asm от PDP-11 или 68K.
---
...Я работаю антинаучным аферистом...

mirt1971

С этим я и не спорил. Полностью согласен. Но мне нравится С++.

maggi14

ПЛ-1

maggi14

Или Асм для IBM360

oleg_mcp

Это что, шутка? Почему же тогда большинство ценных программ под Linux начиная с ядра написано на С? Неужели там засели ретрограды, которые не понимают насколько надежными и простыми станут их творения? Классиками я считаю тех, чей код я смотрю, чтобы понять как сделать то или это. Среди них нет С++сников.

Ivan8209

man gcc


-S Stop after the stage of compilation proper; do not assemble.
The output is an assembler code file for each non-assembler in-
put file specified.


Сравни частоту шины и частоту процессора.
Будешь спорить дальше?
---
...Я работаю антинаучным аферистом...

mirt1971

1) Огромное число программ для Linux написано на С++. Ничуть не меньше чем на С. Поверь мне, я несколько раз собирал Linux с нуля, так что понимаю о чем говорю.
2) Классики в твоем понимании вообще не нуждаются в языке - Кнут например. Я говорю не об алгоритмах, а о парадигмах, скорее.

mirt1971

Ты это к чему? Может мимо темы промахнулся? Объясни, плз

Ivan8209

Кстати, напомни, что вовзращает функция, объявленная
f{ чего-то-там }
---
...Я работаю антинаучным аферистом...

feliks28

Java.
Из-за сведения к минимуму run-time ошибок.

skvoria

Несправедливо забыли Perl
А вообще, С в любой его вариации. По поводу скорости спорить не буду, поскольку я редко пишу time-critical приложения. Не замерял.

Marinavo_0507

> Огромное число программ для Linux написано на С++. Ничуть не меньше чем на С.
Да ну?
> Поверь мне, я несколько раз собирал Linux с нуля, так что понимаю о чем говорю.
Да уж, неплохие пальцЫ.

anzakaznov

Почему же тогда большинство ценных программ под Linux начиная с ядра написано на С? Неужели там засели ретрограды?
ага
ну ещё с ядром всё ясно -- быстродействие превыше всего
ну а вцелом ты хорошо сказал %)

mirt1971

1) Ну да
2) Это не пальцы. Это факт. Спроси например у ash.
И к чему ты все это сказал?

Ivan8209

Сколько у тебя регистров именованной памяти и каких?
Как к ним производится доступ? (На общедоступных x86-ых.)
Какие времена доступа к данным в именованной памяти и в ОЗУ?
Каков размер кода с литералами?
---
...Я работаю антинаучным аферистом...

mirt1971

Ядро BeOS полностью написано на С++. И мне кажется что оно ничуть не медленне ядра Linux. А классная была система, но очень плохой маркетинг погубил ее на корню.

mirt1971

Как это связано с разными возможностями оптимизации С и С++?

Ivan8209

Ну, тогда уж и Басик надо вспомнить. Чего уж там.
Кобол тот же.
---
...Я работаю антинаучным аферистом...

Ivan8209

Это напрямую связано с типизацией.
Ты будешь утверждать, что она одна и та же для обоих языков?
---
...Я работаю антинаучным аферистом...

Chupa

> Это не пальцы. Это факт. Спроси например у ash.
Achtung! ФДСные аццы!

mirt1971

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

mirt1971

Во всяком случае я понимаю что говорю и не перевожу разговор на личности. А за отцов спасибо.

Ivan8209

Ну, я тоже сколько-то раз собирал ядра.
Не только Линукса.
И не только ЛСД.
\m/ \m/
---
...Я работаю антинаучным аферистом...

Marinavo_0507

> Ну да
посмотрел я у себя ps auxw, из программы на С++ в явном меньшинстве, и все они GUI, системной ни одной не заметил
наверное, у меня неправильный линукс
> Спроси например у ash.
у него тоже пальцЫ?

mirt1971

Молодец. А теперь прочти вопрос на который я отвечал.

mirt1971

1) А у меня наоборот.
2) Причем тут пальцы? Я о факте, а ты о пальцах.

Ivan8209

Я могу ещё проверить одинаковый по построению код на OCamle и на
разных сях. Только боюсь, последние сядут в лужу.
Могу поступить более мягко: сравнить выдачу Фортрана с сями.
Смысл?
Можно придумать такой код, когда указание дополнительного
ограничения (например, приведение типа) вызовет более глубокую
оптимизацию.
---
...Я работаю антинаучным аферистом...

mirt1971

Придумай. И покажи. Блин:
"Если всю мочу собрать и использовать умело,
МОЖНО солнце обоссать, вот бы здорово шипело."

Marinavo_0507

> А у меня наоборот.
Специально подбирал?
Ну давай договоримся, что такое Linux.
Строго говоря, это ядро.
В дистрибутиве ядра со своей тачке я нашёл только один C++ файл: scripts/kconfig/qconf.cc
Похоже, это какой-то гуёвый заменитель make config.
Комментарии излишни.
Иногда под словом Linux понимают дистрибутив, тогда следует договориться о том, какой именно возьмём и почему,
и как бы побыстрее подсчитать, сколько там каких программ.
> Причем тут пальцы?
А не из вашей тусовки случайно? Стиль у его откровений в соседнем разделе похожий.

mirt1971

1) Не подбирал.
2) Не передергивай. Когда ты говорил что у тебя в Linux по команде ps aux выдается больше программ на С ты что имел в виду? Ядро? Дистрибутив? Продолжай в таком духе, и я прекращу отвечать на твои посты, как не несущие полезной информации.
3) Такого не знаю. А ты видимо из тусовки КОНТРЫ.

Marinavo_0507

> как не несущие полезной информации
ну если информация о том, что у многих других людей среди используемых программ написанные на C++ в меньшинстве,
бесполезна, то можешь не отвечать
> Когда ты говорил что у тебя в Linux по команде ps aux выдается больше программ на С ты что имел в виду?
некоторая оценка по доле программ на С и на C++ среди используемых мной
причём ничего нетипичного среди них нет
а вот мне интересно, что за Linux ты собирал много раз с нуля?
я реально не понимаю, откуда там взялось столько программ на C++, зачем они?

mirt1971

Ну ты сам этого захотел. Прощай. В игнор навеки.

zontik

Linux - это ядро?
Тогда Linux нельзя считать полноценной операционной системой и нужно на него забить, и предать забвению.
Охотно верю что он целиком написан на языке которому за 30 лет, а основным идеям столько же сколько первому програмимсту Евклиду.
ЗЫ: оставить его работать на маршрутизаторах и прочих холодильниках

Marinavo_0507

ещё один?
ставь игнор сразу, устал я уже

Chupa

халявщик
фраги надо зарабатывать, а не выпрашивать

730093729520

А че это вы все С да С...
Я вот на Delphi пишу...

hoha32

Гыгы, винда тоже кал тогда, ибо тож на чистом С написана.

mirt1971

Ты сам сказал Не прибавить не убавить

Marinavo_0507

Выше сказано, что не является калом. BeOS, говорят.
А вообще, откуда сведения: "Гыгы, винда тоже кал тогда, ибо тож на чистом С написана."?
Только не надо говорить, что неоднократно собирал с нуля, ок?

Ivan8209

Легко.
Функция для умножения 8-разрядных значений.
На Си:


f(a, b) { return a*b; }


На приплюснутом Си этот же код должен быть обязательно с
указанием типов:


char f(char a, char b) { return a*b; }


Умножение 8 на 8 и умножение 32 на 32 занимают разное время.
В особенности, если ты возьмёшь процессор без команды умножения.
Хотя в первом случае компилятор из контекста (не приведён)
мог бы догадаться, что ты используешь только младшие 8 разрядов.
---
...Я работаю антинаучным аферистом...

hoha32

Честно говоря, такой вывод я сделал исходя из того, что WinAPI - это чистый С.
Поправьте меня, если я неправ.

Ivan8209

Поскольку ты здесь новый, то объясняю:
не из моей тусовки.
---
...Я работаю антинаучным аферистом...

Elina74

Я тоже Перл люблю, за его регулярные выражения и за то что прога на перле гораздо короче аналогичной на Си.

Marinavo_0507

> Честно говоря, такой вывод я сделал исходя из того, что WinAPI - это чистый С.
Странный вывод.
Тем более, что Windows - это уж точно не ядро, а дистрибутив.
Да и в ядре, я слышал (сам не видел используются многие возможности C++, в частности в драйверах это якобы легко.

mirt1971

1) Для С какого типа будут a, b? Вполне определенного. И где тут простор для оптимизаций?
.file "qw.c"
.text
.globl f
.type f, @function
f:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp %eax
imull 12(%ebp %eax
popl %ebp
ret
.size f, .-f
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.4.1"
Вполне видно что это инт. Так и в С++ напиши инт. Это будут две одинаковые программы. Где тут разные возможности оптимизации?
2) Не мог и не должен догадываться. Читай стандарты.

mirt1971

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

bastii

1) кто сказал, что майкрософт задвигает С++? наоборот они его активно развивают, посмотри на VC++2005
2) у С есть две фишки: нестрогая типизация, быстрая компиляция относительно С++ (кое-где это бывает полезно, возможно имеет смысл писать кернел на С)

mirt1971

А чем лучше нестрогая типизация? И главное: а разве срогую типизацию в С++ нельзя обойти?

bastii

гон, спрошные эксепшины
в этом отношении Eiffel лучше

bastii

я сказал, что кое-где полезно -- где код будет засоряться кастами

Ivan8209

Оптимизирующий компилятор --- должен.
Иначе он не оптимизирующий, а так.
Погулять вышел.
В частности, "идеальный" оптимизирующий компилятор должен
догадаться, что используются только 8 младших разрядов из
скольки есть.
---
...Я работаю антинаучным аферистом...

mirt1971

Ну кому как. Мне кажется что с кастами понятнее. Да и ошибок легче избежать. Это дело вкуса.

Ivan8209

В частности, тем, что становятся возможны низкоуровневые хаки,
до которых неспособен догадаться разработчик компилятора.
Ну и как, расскажи, ты обходишь строгую типизацию в Си++?
Приведи пример использования нестрогой.
---
...Я работаю антинаучным аферистом...

mirt1971

Во время компиляции файла a.c где расположено определение f он должен понять что в файле b.c где эта функция используется он должен понять такую ахинею? Тогда этот компилятор - маг и волшебник. Читай стандарты. Да и вообще читай. Говорят, помогает.

bastii

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

Ivan8209

Классический вопрос (в духе RU.OS.CMP):
а что _ты_ называешь операционной системой?
---
...Я работаю антинаучным аферистом...

mirt1971

Это да. Есть такое дело. Но в случае с Linux дело скорее всего было в том что Линус просто не рюхал С++ когда начал его делать

bastii

а хочу джаву обосрать
говно язык! может там интерфейс и бины всякие с помощью визардов ваять и нормально, но вот на универсальный язык он не тянет, что странно учитывая тот факт, что САН свою платформу снарядила только джавой.
и почему мне на джава прогать приходиться

Chupa

> Но в случае с Linux дело скорее всего было в том что Линус просто не рюхал С++ когда начал его делать
первая сцылка в гоогле по запросу "linux linus c++"
http://www.linuxgazette.com/issue32/rubini.html
Many people ask why the kernel is written in C instead of C++. What is your point against using C++ in the kernel? What is the language you like best, excluding C?
Linus: C++ would have allowed us to use certain compiler features that I would have liked, and it was in fact used for a very short timeperiod just before releasing Linux-1.0. It turned out to not be very useful, and I don't think we'll ever end up trying that again, for a few reasons.
One reason is that C++ simply is a lot more complicated, and the compiler often does things behind the back of the programmer that aren't at all obvious when looking at the code locally. Yes, you can avoid features like virtual classes and avoid these things, but the point is that C++ simply allows a lot that C doesn't allow, and that can make finding the problems later harder.
Another reason was related to the above, namely compiler speed and stability. Because C++ is a more complex language, it also has a propensity for a lot more compiler bugs and compiles are usually slower. This can be considered a compiler implementation issue, but the basic complexity of C++ certainly is something that can be objectively considered to be harmful for kernel development.

Ivan8209

Что, стандарт Си уже стал определять, как должен работать
правильный компилятор? И который это компилятор?
Неважно, где расположено определение функции, коль скоро оно
используется только в пределах одинакового (или даже одного)
контекста, где имеют значение только младшие разряды.
_Оптимизирующий_ компилятор должен понять это.
То, что язык допускает модульность только на уровне файлов ---
его личные трудности и головная боль разработчиков и писателей
_оптимизирующих_ компиляторов.
---
...Я работаю антинаучным аферистом...

bastii

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

mirt1971

И что? А ты ксати знаешь сколько времени прошло от начала разработки до выхода 1.0? В начале разработки Linus мог и не рюхать в С++. Да, а ты заметил смайлик в моем сообщении?

bastii

все современные С++ компиляторы уже давно оптимизируют на уровне всей сборки

mirt1971

Ну ты и ...
То, что язык допускает модульность только на уровне файлов ---
его личные трудности и головная боль разработчиков и писателей

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

Chupa

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

zontik

то с чем приходится возиться прежде чем начать возиться с программой (с)
обычно это некая общая часть, которая включает несколько больше чем Windows или Linux или даже Mac OS, то есть это то что люди обычно называют ОС + аппаратная инициализация + какая-нибудь система управления задачами + файловая система. То над чем приходится задумываться, отвлекаясь от своей задачи (решение СЛАУ, написание текста, рисование, и т. д. ...). То что нормального человека ставит в тупик, и вселяет первобытный страх.

mirt1971

Это как? А если определение функции лежит в библиотеке? Что тогда сделает компилятор? Дизассемблирует библиотеку и будет переоптимизировать нужные функции? Так авторов тогда посадят

Ivan8209

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

mirt1971

Что именно я пропустил при чтении? Ткни пальцем.
В отличие от тебя я не пизжу, а говорю дело. А за отцов спасибо.

mirt1971

А ты знаешь что такое единица компиляции? А ты понимаешь что оптимизация за пределами этой единицы принципиально невозможна? Да хотя бы по юридическим причинам?(смотри выше)

Ivan8209

Вот, говорят, в AS/400 нету файловой системы.
Про всякие, там, RTMX, VRTX и ещё тучу операционных систем
я уже молчу.
---
...Я работаю антинаучным аферистом...

Ivan8209

То, что твой компилятор не глядит далее одного файла --- его
личные трудности. Такой компилятор не имеет права называться
оптимизирующим. Ему не просто так скармливают список файлов.
Юридические причины к делу не имеют отношения:
всё в пределах кода, написанного одним человеком.
---
...Я работаю антинаучным аферистом...

bastii

не знаю как там дело обстоит со сторонними объектниками
штука в том, что сначала каждый срр компилица в объектнык, только не в найтив инструкциях, а на каком-то промежуточном языке
а преобразование (в том числе и оптимизация) из пром. яз. в найтив яз. (x86 и проч) происходит во время линковки
короче деталей я не помню/не знаю, но вроде интеловские и майкрософтские компиляторы с++ так работают

korol41

а кто из твоей тусовки?
а вообще, я считаю, что будущее - за ООП!

mirt1971

Если ты не знал, компилеру не скармливают список файлов. Один файл за один раз. Это линкуются много файлов. Ну о чем после этого с тобой можно говорить? Да посмотри output в вижаке или makefile како-нибудь изучи на досуге что ли.

zontik

В этом плане интересны, скорее, не операционные системы, а более полные решения вроде компьютера Cannon Cat. Хотя такое чудо, наверное, только в музее можно увидеть.
ЗЫЖ про эти оси я не слышал, посмотрю.

Chupa

> Что именно я пропустил при чтении? Ткни пальцем.
там написано не только почему c++ в ядре нет, но и почему его там не планируется
> А за отцов спасибо
применительно к таким как ты, это слово пишется по-другому
научись его уже писать правильно
> В отличие от тебя я не пизжу,
ссылка?
> а говорю дело.
твои домыслы до "дела" недотягивают, извиняй

mirt1971

Честно говоря сомневаюсь. Можно ссылку?

mirt1971

Заметь, что я в основном говорю по теме. А ты флудишь. Прощай. В игнор. Надо побыстрее отсеять таких как ты, будет намного легче.

Chupa

ггг, ну прощай, атец-пиздобол

bastii

ей коммон, ближе к делу. ты кажется на C# пишешь, поделись впечатлениями
(мне C# определенно больше джавы нравиться)

Ivan8209

Вот смотри.
Мышление человека существенно опирается на действие, выражаемое
глаголами. Наиболее древние слова в современном языке ---
глаголы повелительного наклонения.
А ООП проталкивает подход, переворачивающий всё с ног на голову,
ставя дополнение выше действия, над ним производимого.
Так как может быть за ним будущее, если оно:
а) не отвечает способу мышления человека;
б) существенно ограничивает средства выражения только одним
активным объектом.
в) не достигло такой выразительности средств, каких достигли
функциональные языки;
г) не предоставляет таких средств оптимизации, как
функциональные языки;
д) при всём этом, не только исчерпало возможности своего
развития, но и не сообщает никаких признаков наличия таковых.
---
...Я работаю антинаучным аферистом...

bastii

да ладно. хорош гнать на ООП. пользоваться не умеешь -- не пользуйся

eee1

[flood] блин, ты типа не знаешь что все они тут атцы (Gadfather, , KOHTRA). Бери книжку Страустрапа и читай внимательно
[/flood]

Ivan8209

Да-а-а?


SYNOPSIS
gcc [ option | filename ]...
g++ [ option | filename ]...


А Makefile --- это личные трудности твоего любимого компилятора,
_не_допускающего_ оптимизации программы в целом.
---
...Я работаю антинаучным аферистом...

Dasar

Может все-таки лучше использовать шаблоны, чем так извращаться...

mirt1971

Я ее три раза прочел от корки до корки. И еще кучу литературы по С++, посерьезнее. Без шуток.

Chupa

> ей коммон, ближе к делу.
этот тред для стёба, если я всё правильно понял

bastii

инет выпал
думаю в MSDN найти не сложно
была кажется статья в MSDN Magazine

mirt1971

У меня тоже инета нету. Завтра посмотрю, мне даже интересно стало.

Ivan8209

Лучше не использовать сей.
Ни в каком виде.
---
...Я работаю антинаучным аферистом...

bastii

ну и ладно, я джава все равно говно!

Dasar

"Си" проще, чем фя, а люди ленивы - и этим все сказано.

Ivan8209

Сомнительно, и ты об этом знаешь.
Кобол тоже --- до сих пор жив.
---
...Я работаю антинаучным аферистом...

bastii

все таже причина - люди ленивы
это ж надо с кобола переписывать, да Схх какой-нибудь учить

korol41

Мышление человека существенно опирается на действие, выражаемое
глаголами. Наиболее древние слова в современном языке ---
глаголы повелительного наклонения.
......
а) не отвечает способу мышления человека;

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

обоснования? в частности, насчет д). хочешь сказать, что функциональные языки развиваются быстрее, чем ООП?

Dasar

> А ООП проталкивает подход, переворачивающий всё с ног на голову,
> ставя дополнение выше действия, над ним производимого.
В русском, так и в английском языках - сначала идет подлежащие, потом сказуемое, а потом дополнение.
Текущая запись выражений в ООП придерживается такого же стиля. Что не так?
> а) не отвечает способу мышления человека;
см. выше
> b) существенно ограничивает средства выражения только одним
активным объектом.
пиши так: (file1+file2).Copy(targetDir) и будет тебе счастье.

bastii

в МL неплохо уживаются концепциии ООП и функциональных языков

zontik

А тогда такой вопрос:
вот если человек хочет изучить процедуры ему предлагают Pascal
если обьекты то Smalltalk
а вот если фя, то ему что изучать? (что бы в дальнейшем он писал хороший понятный расширяемый ф-код, быть может с кем-нибудь в команде и ему бы это нравилось, а другие фя может не такие строгие он бы легко воспринимал, обращая внимание на их слабые места)
c-lisp? haskel или scheme?

Ivan8209

И что?
Глаголы "дай" или "беги" умерли?
Да.
Несмотря на то, что ООЯ появилось позднее ФЯ,
редкий ООЯ достигает хотя бы того уровня ОО, который достигается
в таком древнем ФЯ (условно как Лисп.
А если брать вторую волну, то в ФЯ и в ООЯ она появилась почти
одновременно.
Однако, с тех пор ФЯ по скорости достигли, а порой даже
превзошли ИЯ (по выразительности они превосходили ИЯ с
рождения чего отнюдь не скажешь про ООЯ.
---
...Я работаю антинаучным аферистом...

Ivan8209

В повелительном наклонении?
---
...Я работаю антинаучным аферистом...

Ivan8209

Из этих --- третий.
---
...Я работаю антинаучным аферистом...

Ivan8209

Есть CLOS.
И что?
---
...Я работаю антинаучным аферистом...

Dasar

Как из фя вызвать функцию WNetEnumResource?
Как из фя сделать:


connectToDB;
Data data = GetData;
CloseDB;


?

bastii

а хз
и вообще, что за бред про глаголы и прочее
мало ли кто чего придумывает, еще про логические языки вспомнить осталось

Dasar

> В повелительном наклонении?
писать программы в повелительном наклонение - это зло, потому что в этом случае компьютер выступает "болваном".

mirt1971

Кстати он и есть болван.

Dasar

> Однако, с тех пор ФЯ по скорости достигли, а порой даже
превзошли ИЯ
Как быть, например, с runtime-полиморфизмом?

Ivan8209

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

Dasar

Считать всех остальных дураками - это признак большого ума?

Ivan8209

А он кто такой?
---
...Я работаю антинаучным аферистом...

Ivan8209

1. А он нужен?
2. Когда нужен, под рукой есть компилятор.
---
...Я работаю антинаучным аферистом...

Dasar

быстрый логический вычислитель

mirt1971

Это ты сам выдумал. Здесь много людей чье мнение мне интересно, и которых я уважаю. Но ты не входишь в их число. Я даже не говорю что ты дурак. Это скорее всего не так. Просто с тобой бесполезно говорить о чем-то.

bastii

вот еще, что я на нем писать буду, управление лифтами в ГЗ
хотя думаю будущее за декларативными языками, а логические к ним ближе всего (просто Пролог не самый удачный пример)
пишешь что должно быть сделано, у оптимизатора полная свобода, пусть себе оптимизирует

Ivan8209

"А ты кто такой?" и так далее?
А какие есть основания приписывать компьютеру ум?
---
...Я работаю антинаучным аферистом...

Ivan8209

То бишь, счёты.
Только более сложные и с наворотами.
---
"...Только маленький. И примитивный."
("Его звали Роберт.")

Dasar

> А он нужен?
Да, нужен. Как минимум нужен, если программа разрабатывается не одним разработчиком (не одной командой).
> Когда нужен, под рукой есть компилятор.
99% людей не умеет пользоваться компилятором, но при этом хочет уметь расширять программы, хотя бы в виде добавления готовых модулей.

Ivan8209

ФЯ тоже, кстати, обычно относят к декларативным.
И у компилятора тоже есть полная свобода изменять и переставлять
действия по своему усмотрению.
---
...Я работаю антинаучным аферистом...

Dasar

> А какие есть основания приписывать компьютеру ум?
на сколько я помню, ум это как раз умение быстро проводить логические вычисления.

Ivan8209

Что? Прямо по-живому?
У ФЯ модульность получше будет, чем у модульных ИЯ.
Расширяй --- сколько влезет.
А IPC, кстати,--- рулит.
Да и раздельную компиляцию можно сделать,
если поступиться оптимизацией.
Ввести арифметическое или близкое к нему выражение,
кстати, тоже не особо трудно.
---
...Я работаю антинаучным аферистом...

mirt1971

Как мне кажется, ум - это способность сделать вывод на основе неполных данных.

Dasar

> ФЯ тоже, кстати, обычно относят к декларативным.
Так языки все-таки лучше декларативные? или лучше те, в которых пишутся повелительные глаголы?

Dasar

это уже скорее интуиция, а не ум.

Ivan8209

Самый умный --- это, верно, кулонометр.
Офигенно быстро интегрирует.
Даже непонятно, и как это он только успевает?
---
...Я работаю антинаучным аферистом...

Chupa

>> ФЯ тоже, кстати, обычно относят к декларативным.
> Так языки все-таки лучше декларативные?
> или лучше те, в которых пишутся повелительные глаголы?
по-твоему декларировать действия невозможно?

bastii

кстати, а что за ИЯ?

Chupa

> Как из фя вызвать функцию ...?
ты до сих пор задаёшь такие вопросы?
через врапперы, разумеется, чтобы преобразовать одну систему типов в другую
пример из пингалки сети на Ocaml:
ML-часть: external ping : string -> int * int * int = "ping" ;;
C-часть: CAMLprim value ping (value str);
в сишном коде преобразуем типы через API и вызываем, что хотим
> Как из фя сделать ...?
последовательное выполнение тоже можно записывать
в Ocaml это фича языка, в Haskell есть IO monad

Dasar

> Что? Прямо по-живому?
В каком контексте, высказана данная фраза?
> Да и раздельную компиляцию можно сделать,
если поступиться оптимизацией
Самому делать?
> Ввести арифметическое или близкое к нему выражение,
кстати, тоже не особо трудно.
Это совсем не главное.
в том же коде linux-а более сложных выражений, чем a/b, a+b единицы.

Ivan8209

Здесь мнения разных специалистов расходятся:
некоторые относят функциональные языки к императивным,
а некоторые --- к декларативным.
Последнее, вроде, более верно: порядок действий может быть
существенно изменён, да и выражение может быть упрощено.
Собственно, и описывается-то, в общем случае, итог действия,
а не само действие.
---
...Я работаю...

Dasar

какое это отношение имеет к логическим вычислениям?

Dasar

Зачем в каждом действии подчеркивать, что это команда для исполнителя? да, и вообще подчеркивать само наличие исполнителя?

Ivan8209

Код менять надо, чтобы по живому?
>> Да и раздельную компиляцию можно сделать,
>> если поступиться оптимизацией

> Самому делать?
"Всё уже украдено до нас."
>> Ввести арифметическое или близкое к нему выражение,
>> кстати, тоже не особо трудно.

> Это совсем не главное.
А что?
---
...Я работаю антинаучным аферистом...

Dasar

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

Ivan8209

А как он интегрирует?
Прямоугольничками али по Симпсону?
Или вообще --- сплайны строит?
---
...Я работаю антинаучным аферистом...

Ivan8209

Таким образом и приходим к повелительному наклонению без обращения.
---
...Я работаю антинаучным аферистом...

mirt1971

Так не бывает.

Dasar

> Код менять надо, чтобы по живому?
34
> А что?
Важнее умение описывать сами данные, а также взаимосвязи между данными.
а также в дальнейшем уметь применять эти описания

Chupa

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

Ivan8209

Думай дальше.
---
...Я работаю антинаучным аферистом...

Dasar

И чем же лучше:
"Скопируй файлы в директорию"
чем
"Файлы копируются в директорию"
Ps
замечу, что во втором случае остается больший просто для оптимизации:
так файлы могут быть скопированы и с помощью человека, так и с помощью самих файлов, если в них встроен процессор.

Dasar

> мне действительно интересно, почему ты до сих пор не разобрался
Потому что мне не хватило терпения и времени.
> прочитай мануал, чтоли
не имею возможностей.
Поэтому мне и хочется, воспользоваться твоей помощью, как эксперта, и узнать сколько требуется написать строчек кода для вызова функции WNetEnumResources

Dasar

императивные языки

Dasar

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

Ivan8209

У тебя во втором случае объекты неравноправны:
есть субъекты, а есть объекты.
То бишь, подлежащие и дополнения.
Однако, смысловая разница.
Опять же, вовзратный глагол в изъявительном наклонении?
Не сложно ли?
Кроме того, "копируются" исходно означает "копируют себя,"
указывая действующее и косное начала.
"Сделай" не подразумевает "сиди и вкалывай неотрываясь."
Ср. "оплата сдельная."
---
...Я работаю антинаучным аферистом...

Ivan8209

Вот я и говорю, что кулонометр обладает просто выдающимся умом.
Мало того, ещё никто и не догадывается, что же он такое внутри
делает, что у него так замечательно получается.
---
...Я работаю антинаучным аферистом...

Dasar

> У тебя во втором случае объекты неравноправны:
> есть субъекты, а есть объекты.
> То бишь, подлежащие и дополнения.
Дык, можешь тогда надо начинать с обычного языка, и сделать так, чтобы в нем тоже не было подлежащий и дополнений, а все объекты были равноправны?
> Опять же, вовзратный глагол в изъявительном наклонении?
> Не сложно ли?
Это уже издержки русского языка, так как в русском языке по другому не получается сформировать фразу без указания явного исполнителя.
> Кроме того, "копируются" исходно означает "копируют себя,"
указывая действующее и косное начала.
Это побочный эффект, основный смысл фразы в том, что файлы неким высшим образом перемещаются в директорию, оставляя тем самым простор для оптимизации.
> "Сделай" не подразумевает "сиди и вкалывай неотрываясь."
> Ср. "оплата сдельная."
Но подразумевает явное участие исполнителя в указанном действии.

Ivan8209

Да, не эти ли люди заваливают тест Тьюринга?
---
...Я работаю антинаучным аферистом...

Dasar

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

Ivan8209

> Дык, можешь тогда надо начинать с обычного языка, и сделать так, чтобы в нем тоже не было
> подлежащий и дополнений, а все объекты были равноправны?
Зачем?
В нём и так есть подъязык приказов, где есть чётко выделенное
действие, приводящее к (в общем случае --- похожему) итогу,
а всё остальное --- косное и вынесено в дополнения.
>> Опять же, вовзратный глагол в изъявительном наклонении?
>> Не сложно ли?

> Это уже издержки русского языка, так как в русском языке по другому не получается
> сформировать фразу без указания явного исполнителя.
Ну, попробуй сделать в английском.
Или в немецком.
>> "Сделай" не подразумевает "сиди и вкалывай неотрываясь."
>> Ср. "оплата сдельная."
> Но подразумевает явное участие исполнителя в указанном действии.
Всё его участие может быть сведено к передаче приказания далее
по цепочке.
---
...Я работаю антинаучным аферистом...

Ivan8209

Это уже заметное расширение предыдущего определения.
Можно соединить кулонометр со сливным бачком:
один быстренько заряд интегрирует,
а другой за уровнем воды следит.
---
...Я работаю антинаучным аферистом...

Chupa

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

Dasar

> Всё его участие может быть сведено к передаче приказания далее
по цепочке.
Вот видишь, ты уже себя ограничил. Ты думаешь, что в программах бывают только приказы.
А ведь исходное выражение могло быть частью такой программы:


Файлы A,B копируются в директорию C.
Исполнителями являются Вася и Петя.
Действие должно быть выполнено к 5 часам.
Проследи за правильностью выполнения.


или такой:


Файлы A,B копируются в директорию C.
Файлы A и B располагаются на хосте D, а папка C на хосте E.
Рассчитай какое кол-во трафика передастся по сети в этом случае.

Dasar

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

Ivan8209

В первом случае задача --- проследить,
во втором --- рассчитать.
И там, и там приказ описан глаголом в повелительном наклонении.
Просто над тобой довлеет то самое проклятье Джона Бекуса.
---
...Я работаю антинаучным аферистом...

Dasar

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

Ivan8209

"Есть многое на свете, друг Горацио,
что и не снилось нашим мудрецам."
Приборов на свете много разных.
Ножницы, например.
---
...Я работаю антинаучным аферистом...

Ivan8209

Я тебе говорю: проклятье Джона Бекуса.
Рассчитать общий размер данных, передаваемых по сети при
пересылке файла такого-то с узла такого-то и файла такого-то с
узла такого-то на узел такой-то.


(define объём-данных
(+ (размер-при-передаче (файл "узел" "имя") "узел")
(размер-при-передаче (файл "узел" "имя") "узел"


---
...Я работаю антинаучным аферистом...

Dasar

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

Dasar

ты потерял данные, из твоего определения ни как не вытекает, что выполняются какие-то действия.
> (define объём-данных
Это определение не подходит для второй задачи.
исходное определение можно было использовать в обоих задачах.
ps
и как же будет определена функция "размер-при-передаче"?

Ivan8209

> ты потерял данные, из твоего определения ни как не вытекает,
> что выполняются какие-то действия.
В этом и суть декларативных языков.
> Это определение не подходит для второй задачи.
> исходное определение можно было использовать в обоих задачах.
И почему оно не подходит?
> и как же будет определена функция "размер-при-передаче"?
Как угодно.
Это тонкости, от которых можно отвлечься.
---
...Я работаю антинаучным аферистом...

LAWD

Я чистый Си предпочитаю.
Удобен и понятен он.
Ну и пишу на нём, конечно,
Я с незапамятных времён.

Codcod

а мне пофиг...
и вообще меня уже достало програмить

Dasar

> В этом и суть декларативных языков.
Гон. Суть декларативных языков не в том,чтобы терять информацию, и не уметь описывать ситуацию, а в том, чтобы предоставлять наиболее полную информацию о задаче (т.е. специфицировать то что надо, и не специфицировать, то что не надо).
Хочешь сказать, что раз нет глаголов - то это сразу стало декларативное представление, а раз глаголы - значит не декларативное?
Замечу, что вот следующие является декларативным определением:


Файлы A и Б копируются в папку C.
Исполнителями являются Вася и Петя.
Действие начинается в 3 и должно быть выполнено к 5.


Да, и вот такое - это тоже чисто декларативное определение:


Коллекция сортируется по ходу работы.
для сортировки используется QuickSort.


хотя здесь и явно говориться, как надо приступить к выполнению задачи.
> Это тонкости, от которых можно отвлечься.
Опять гон. В этом как раз и разница между ИЯ и ДЯ.
В ИЯ эту функцию надо писать самому, в ДЯ - исполнитель может сам эту функцию восстановить на основе более раннего декларативного определения.

bleyman

Ох. Я ужасно не хочу вступать в дискуссию с КОНТРА, но все же выскажу свое мнение, которое возможно будет интересно остальным. Кстати, надо добавить фишку в форум - принудительный игнор себя кем-то. Это было бы прекрасно!
1) Линус написАл некое свое мнение. Типа, его проект - он и решает. Более того, я бы на его месте принял бы такое же решение. Хотя объявлений переменных в любом месте Сям явно не хватает. Хотя самое правильное, имхо, - подпатчить компайлер С, конечно =) Добавить некоторые возможности.
2) Пример контры очень забавен тем, что а) конкретно щаз любые(!) действия над 32битными числами жрут меньше места и времени чем над 8-битными. В современных десктопах. А абсолютная переносимость программы - это очень вредный миф. Мою программу написанную под С51 с конкретной схемой окружения переносить даже на другое окружение бессмысленно, не говоря даже о другом проце. С другой стороны в тех же жаве и шарпе четко заявлено, что инт - это 32 бита, при этом переносимость теоретически абсолютная.
3) ООП - это парадигма, а не свойство языка. Я могу написАть прекраснейшую ООП программу на чистом С. Честно. Даже с полиморфизмом. Читайте Code Complete, там чувак очень правильную историю про прогу на VB задвинул, как раз про это. Парадигма - она в голове, а не в синтаксисе
4) Функциональные языки не вымрут никогда. Потому что всегда есть задачи на переднем крае возможностей конкретной вычислительной техники, а в таких задачах
а) программер должен быть уверен, что компилятор понимает его именно так, как нужно. Когда я писАл прогу под С51 с 30% запаса по скорости (приблизительно) я читал листинги постоянно. Половину времени где-то.
б) вычислительная техника в большинстве своем думает _функционально_. Ассемблер х86 - функциональный. Поэтому эффективная программа должна легко переводится с языка программиста на язык компьютера. Между парадигмами эффективно переводить, как правило, невозможно.
5) "Файлы копируются в директорию" имхо лучше чем "Скопируй файлы в директорию", тем что в первом случае технология копирования заныкана внутри "Файлов", а во втором - в слове "Скопируй". Ну то есть это я так понимаю эти предложения имея в виду ООП в первом случае и Forth - во втором. На возражение, что слово "Скопируй" может вызывать функцию "копировать себя" у "файлов" а вовсе не имплементить технологию копирования внутри себя, я отвечу: а вот это типичный пример использования парадигмы ООП. А язык тут как раз не важен.
Так вот, а инкапсуляция технологии копирования файлов, копирования частей картинки, копирования интов в конце концов, в одном и том же (оверлоаднутом) слове "Копируй" кажется мне лично глубоко порочной. Особенно по сравнению с
interface IDataSource
{
void CopyTo(IDataTarget destination);
}
который, ИМХО, является Абсолютом копирования чего-нибудь куда-нибудь с минимальными накладными расходами.
6) Конкретно в форте я заметил только одну песдатейшую фишку - типа язык описывает собственный синтаксис и метод компиляции. А сама парадигма ФЯ меня совершенно не прикалывает (см. п. 5).
7) Декларативные языки - это, конечно, добро. Но у них своя сфера эффективного примения, у процедрных/ООП - своя, поэтому спор о том, что лучше, я считаю в высшей степени бессмысленным. Знать лучше обе парадигмы, конечно.

smnikiforov

>Кстати, надо добавить фишку в форум - принудительный игнор себя кем-то.
предлагал. получен категорический отказ

6yrop

C#; он для меня как C++, только доведённый до ума.
имхо, С# это другой язык, чем C++. Сборка мусора изменяется сам способ программирования.
P.S. через смарт-поитеры сборку мусора можно организовать и на C++, но, имхо, это извращение, легче моменять сам язык

feliks28

Да, "спрошные эксепшины"?
А ты блок try-catch не пробовал использовать?

maggi14

Риспект.

feliks28

Ну меняй работу. Тоже мне детская обида - Java не универсальный язык . А так хотелось выучить всего один язык...
Многие считают что VB говно, но лингвой то пользуются...

maggi14

Лингва, если яя не ошибаюсь, написана на пласпласе.

feliks28

Честно говоря хз - просто они летом VB-программистов набирали...

bastii

блин, так это и есть рантаим обработка ошибок (просто trow-catch удобнее if-then)
в том же С++ больше ошибок можно отлавливать при компиляции

maggi14

При падении Лингва жалуется на LingvoProtection.cpp. Прогрмаммеров они обычно хотят сишных. Хотя, мб, для разных целей разные прогеры. Аббии ведь не только лингвой занимается. Да и для лингвы, я думаю, нужны сопутствующие программы: например, для работы с корпусами. Или для созданиия сайта. Или еще для чего-нить.

feliks28

в том же С++ больше ошибок можно отлавливать при компиляции
не верю

evgen5555

Поверь мне, я несколько раз собирал Linux с нуля,
Поэтому вот твои заявления о простоте кажутся несколько, хм, необоснованными, что ли...

sergey_m

> Си --- это очень плохой язык.
Это не аргумент в holy war.

sergey_m

Поверь мне, я несколько раз собирал Linux с нуля
Поясни плс, что это значит. Ты имеешь в виду, что делал свой дистрибутив?

mirt1971

Ага. И поэтому я очень хорошо представляю сколько у меня программ на С++ а сколько на С.

bastii

ладно, уговорил

sergey_m

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

sergey_m

> Ага. И поэтому я очень хорошо представляю сколько у меня программ на С++ а сколько на С.
У тебя. Теперь проанализируй другие дистрибутивы. Только сравнивай дефолтные инсталляции, а не максимальные. Если же сравнивать минимальные инсталлации, то боюсь программ на C++ не будет вообще.
Заранее предупреждаю, что я не хочу сказать, что программы на C++ более бесполезные, чем на C. Я просто опровергаю твоё заявление, что в Linux преимущественно всё на C++.

Chupa

> Ага.
ггг
а говоришь

ray144

У-у, ну и напостили. Еле дочитал до конца. Спасибо всем!
Хочу отметить несколько мыслей.
1. Я спрашивал только то, что спрашивал: «Какой язык…?». Флейм не заказывал. Большое спасибо тем, кто ответил на вопрос.
И ещё (извините, трудно сдержаться). В этом форуме есть такая функциональность, чтобы можно было посты КОНТРЫ не видеть? Ну, как аниме на z80. Необоснованные пальцы и неконструктивная околонаучная лабуда потихоньку напрягают, знаете ли. Можно подумать, здесь на форуме нет ни одного знакомого с PDP-11/Intel 8XYZ/Z80+ и т. д., а только одни обезьяны, наскоро оторвавшие свои хвосты и прочитавшие BASIC for Dummies по диагонали.

2. Asm. Согласен, приятная штука. Такое ощущение, как будто пазл собираешь. Или, как матёрый музыкант, подбираешь ноты.
3. Java. Прикольно, конечно, написать прогу в Studio One, посмотреть на эмуляторе и залить в своего маленького мобильного друга. (Это я про переносимость.) А так… Как я понимаю, C# создавался в т. ч. с учётом джавы, в т. ч. с учётом его недостатков. В книге Thinking In C# время от времени встречаются упоминания типа «ну это почти как в Java».
4. C/C++/C#. Программирование в терминах функций считаю более чем естественным, и не говорите мне, что я ограниченный человек. Почему считаю, что C++ ещё лучше, чем C? Потому, что когда у вас океан функций и структур с ещё большим океаном их взаимозависимостей, не нужно быть специалистом по теории хаоса и порядка, чтобы понять, что без какого-то укрупнения в этом океане просто утонешь. Так что для кого-то ООП – это мода, а для кого-то – неизбежность (чтобы не сказать безысходность и опять же, естественный способ мыслить. Человек мыслит объектами. (Оффтоп: кстати, в японском языке глагол всегда на последнем месте. ) По моему, C++ - это выдающийся язык, на котором в процессе его развития было обкатано много полезных общепрограммистских приёмов, связаных с классами, шаблонами, типами (RTTI исключениями и т. д. Но посколько эти нововведения должны были подчиняться требованиями совместимости, их реализация остаётся несколько корявой и по сей день. C#, в свою очередь, был свободен от всего этого, мог взять лучшее, что есть в C++, джаве, бейсике и стать ещё более прозрачным средством программирования. И теперь можно ещё больше думать над задачей, и ещё меньше – над деталями её реализации. За это я его и люблю.

smnikiforov

В этом форуме есть такая функциональность, чтобы можно было посты КОНТРЫ не видеть?

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

я путаю, или в С# некоторые из этих нововведений и по сей день лишь обещают?

Dasar

> я путаю, или в С# некоторые из этих нововведений и по сей день лишь обещают?
Скорее путаешь, потому что вспоминается в C# только отсутствие множественного наследования, но его и не обещают.

Ivan8209

По положению "2."
"Любые" --- это на одной выделенной платформе.
Про переносимость на более высокую разрядность, кстати, я писал
в другом месте. Самое удивительное: через неделю после моего
высказывания сомнений в переносимости кода, народ обнаружил
провал на 64-разрядной машине.
Учение Чарльза Мура о переносимости очень непопулярно,
поэтому давай его обсуждать не будем.
Есть факт: стремление всех и вся ("почти") писать наиболее переносимо.
Высокоуровневые языки ценны именно тем, что при программировании
не надо задумываться о том, как это работает на самом деле.
И переносимость их обеспечивается созданием такого окружения,
когда нет нужды в знании ширины машинного слова.
Что ты понимаешь под словами "ассемблер х86 --- функциональный?"
Упрятывание функциональности "копировать" внутрь объекта,
со всеми его единственными и неповторимыми свойствами,
выделяющими его среди всех прочих объектов, приводит к тому,
что ты теряешь кучу полезных соотношений, присущих общему
действию "копирования."
Просто за счёт приписывания этому действию неповторимости.
По поводу "6," кстати, открой для себя мир лиспа.
---
...Я работаю антинаучным аферистом...

bleyman

Я читал ваш [censored] спор о переносимости.
И переносимость их обеспечивается созданием такого окружения,
когда нет нужды в знании ширины машинного слова.

Ну типа в принципе да, но есть два пути - либо ты пишешь так, чтобы 11-битность инта не приводила к страшным последствиям, либо ты пишешь в системе, в которой инт гарантированно 32 бита.
>Что ты понимаешь под словами "ассемблер х86 --- функциональный?"
Упс. Имелось в виду, конечно же, слово "процедурный".
>Просто за счёт приписывания этому действию неповторимости.
Интерфейсом IDataSource я приписываю этому действию абсолютную повторимость и унифицированность. Понятие интерфейса входит в ООП с самого начала (только тогда оно называлось Множественным Наследованием).
>По поводу "6," кстати, открой для себя мир лиспа.
Не лежит у меня душа в данный момент к узкоспециализированным языкам =)

Chupa

> блин, ты типа не знаешь что все они тут атцы (Gadfather, , KOHTRA).
> Бери книжку Страустрапа и читай внимательно
там такое написано?

dremel

> Еще на меня произвел впечатление NesC под TinyOS, но я на нем не работал.
Надо же! Респект, Кайафа, не ожидал я в форуме встретить человека? знающего про NesC и TinyOS.
Я с ними, родимыми, работаю профессионально.
Честно сказать, не слишком сильное впечатление несси на меня производит, чем дальше, тем больше.
Много гемора и общее впечатление неуклюжести языка (это субъективно).
Ещё не нравится нагромождение новых языковых конструкций, за которыми на самом-то деле порой скрываются простенькие сишные вещи (это объективно).
Но самое, мля, голимое в несси- это его е..учий компилятор, отвратительно написанный на С. По ходу, специально так, чтобы хрен кто разобрался.
После того, как я повозился с исходниками нессишного компилера, моё уважение к универу Беркли сильно пошатнулось. Я бы писал подобный компилер в Gentle'e.
В то же время нельзя не признать, что своей нише - созданию глубоко параллельных прог для embedded и распределённых систем - он адекватен более, чем кто-либо ишшо.
Если не секрет, Кайафа, а откуда ты про эти вещи знаешь?

Ivan8209

"...И умер Змей Горыныч.
Потому что был он --- шестнадцатиразрядным."
Ещё лучше --- писать в системе, где целое число является именно
целым числом. А не "по модулю эн."
> Интерфейсом IDataSource я приписываю этому действию абсолютную повторимость
Таким образом, тебе приходится отдельно описывать действие,
прикладывая дополнительные усилия.
И это при том, что подобное описание всегда существует
и (в функциональной парадигме) его не требуется, вообще говоря,
прописывать отдельно.
См., например, выдачу:


~ # sml
Standard ML of New Jersey, Version 110.0.7, September 28, 2000 [CM; autoload enabled]
- fun k a b = a;
val k = fn : 'a -> 'b -> 'a


Ещё вопрос по ООП:
как предполагается описание срествами ООП действий,
дающих в итоге качественно отличный объект?
Например, "внешнее произведение:" ab^+.
Кстати, чуть вернусь.
Поясни вот это: "язык (Форт --- прим. моё.) описывает
собственный синтаксис и метод компиляции."
Что ты имел в виду?
---
...Я работаю антинаучным аферистом...

maggi14

Luxoft

dremel

Ни фига себе! И я там же, в R&D. Ты в каком отделе?

maggi14

Ушел. Был в Делле.

VitMix

C. Возможно потому, что я мало на нём пишу... хотя раньше писал на нём много и он мне тоже нравился (для сведения: много пишу на C# и Java).

bleyman

>Ещё лучше --- писать в системе, где целое число является именно
>целым числом. А не "по модулю эн."
Не сказал бы. Мне вот, например, очень нравятся некоторые фишки помодульной арифметики. Я в ней привык думать.
>Таким образом, тебе приходится отдельно описывать действие,
>прикладывая дополнительные усилия.
Отнюдь. Действие ВСЕГДА приходится описывать. В ООП парадигме я его разбиваю на два действия - выдать кусок данных и получить кусок данных, при этом каждый объект реализует эти действия как ему угодно.
Пример ты очень смешной привел, спасибо!
>как предполагается описание срествами ООП действий,
>дающих в итоге качественно отличный объект?
>Например, "внешнее произведение:" ab^+.
Ты принципально только на ФЯ пишешь? Или, может быть, ты вообще теоретически программирование знаешь? Или ты что-то странное понимаешь под словами "качественно отличный объект"?
Кстати, любой алгоритм можешно реальзовать на машине тьюринга (типа тавтология на самом деле). Средствами ООП можно реальзовать машину тьюринга. А парадигма - она в голове. Поясни, что такое внешнее произведение.
>Поясни вот это: "язык (Форт --- прим. моё.) описывает
>собственный синтаксис и метод компиляции."
>Что ты имел в виду?
В мега-книжке про форт был пример на 15 строчек реализующий интерпретацию инфиксной записи, а потом еще 10 строчек на объявление паскалевского стиля переменных, а потом еще строчек 10 на дополнительную фигню. В результате форт-машина понимает почти паскаль. Меня это поразило до глубины души.

gopnik1994

Шекспир - это что-то с чем-то!

maggi14

Ivan8209

>> Ещё лучше --- писать в системе, где целое число является именно
>> целым числом. А не "по модулю эн."
> Не сказал бы. Мне вот, например, очень нравятся некоторые фишки помодульной арифметики. Я
> в ней привык думать.
Например?
Ранняя оптимизация вредна.

>> Таким образом, тебе приходится отдельно описывать действие,
>> прикладывая дополнительные усилия.
> Отнюдь. Действие ВСЕГДА приходится описывать.
Я имел в виду другое.
Если брать сильную типизацию, то свойства функции можно вывести
из того, как она употребляется, без привлечения человека (или с
наименьщим привлечением его).
>> как предполагается описание срествами ООП действий,
>> дающих в итоге качественно отличный объект?
>> Например, "внешнее произведение:" ab^+.
> Ты принципально только на ФЯ пишешь?
Я не только на ФЯ пишу.
> Или ты что-то странное понимаешь под словами "качественно отличный объект"?
Как итог некоторых действий получаются объекты, качественно
отличающиеся от исходных, они не могут быть получены как
"немного изменённые" исходные.
Я не понимаю, как ООП может справиться с этим в рамках себя самой.
> Кстати, любой алгоритм можешно реальзовать на машине тьюринга
> (типа тавтология на самом деле). Средствами ООП можно
> реальзовать машину тьюринга. А парадигма - она в голове.
> Поясни, что такое внешнее произведение.
Средства ФЯ (за исключением редких случаев) полностью
соответствуют целям. Даже сферический пылесос не надо
изобретать.
Тезис Чёрча, однако.
> В мега-книжке про форт был пример на 15 строчек реализующий
> интерпретацию инфиксной записи, а потом еще 10 строчек на
> объявление паскалевского стиля переменных, а потом еще строчек
> 10 на дополнительную фигню. В результате форт-машина понимает
> почти паскаль. Меня это поразило до глубины души.
Если не секрет, что за книжка?
Если учесть объявление переменной в Форте, почти полностью
соответствуют такому, которое использует Паскаль,
то это неудивительно.
---
...Я работаю антинаучным аферистом...

bleyman

>Если брать сильную типизацию, то свойства функции можно вывести
>из того, как она употребляется, без привлечения человека (или с
>наименьщим привлечением его).
Пример! Не такой смешной, как предыдущий, пожалуйста. Если тебе покажется, что я чего-то не пойму, пиши комментарии.
>Как итог некоторых действий получаются объекты, качественно
>отличающиеся от исходных, они не могут быть получены как
>"немного изменённые" исходные.
Пример! На русском языке! Я честно не понимаю, что ты имеешь в виду!
>Если не секрет, что за книжка?
>Если учесть объявление переменной в Форте, почти полностью
>соответствуют такому, которое использует Паскаль,
>то это неудивительно.
Есть подозрение, что ты нифига не понимаешь форт так, как понимаю его я, хотя я в жизни на нем ни строчки не написАл. В форте нет объявлений переменных. Зато ":" - это тоже слово.

Ivan8209

>> Если брать сильную типизацию, то свойства функции можно вывести
>> из того, как она употребляется, без привлечения человека (или с
>> наименьщим привлечением его).
> Пример! Не такой смешной, как предыдущий, пожалуйста. Если тебе покажется, что я чего-то не
> пойму, пиши комментарии.


Standard ML of New Jersey, Version 110.0.7, September 28, 2000 [CM; autoload enabled]
- fun rep 0 f x = x | rep n f x = f(rep (n-1) f x);
val rep = fn : int -> ('a -> 'a) -> 'a -> 'a


Здесь мне услужливо сообщают, что f должно быть отображением
произвольного "а" в тот же "а."
Для того, чтобы использовать rep, не надо дополнительно
объявлять, каким должно быть f.
>> Как итог некоторых действий получаются объекты, качественно
>> отличающиеся от исходных, они не могут быть получены как
>> "немного изменённые" исходные.
> Пример! На русском языке! Я честно не понимаю, что ты имеешь в виду!
Например, то же получение матрицы внешним произведением
векторов.
Можно подобрать и физический пример, исходя из того, что эти
векторы и матрицы моделируют.
>> Если не секрет, что за книжка?
Ладно. Допустим, что это тайна за семью печатями.
> Есть подозрение, что ты нифига не понимаешь форт так, как
> понимаю его я, хотя я в жизни на нем ни строчки не написАл.
Очень даже вероятно.
Я на нём пишу.
> В форте нет объявлений переменных. Зато ":" - это тоже слово.
Location: http://forth.sourceforge.net/standard/fst83/fst83-12.htm


12. REQUIRED WORD SET
12.1 The Required Word Set Layers
<...>
Compiler layer
+LOOP , ." : ; ABORT" ALLOT BEGIN COMPILE CONSTANT
CREATE DO DOES> ELSE IF IMMEDIATE LEAVE LITERAL LOOP
REPEAT STATE THEN UNTIL VARIABLE VOCABULARY WHILE
~~~~~~~~
['] [COMPILE] ]


Подчёркнуто мною.
Location: http://www.tinyboot.com/ANS/dpans6.htm


6.1.2410 VARIABLE
CORE
( "<spaces>name" -- )
Skip leading space delimiters. Parse name delimited by a space. Create a definition for name with
the execution semantics defined below. Reserve one cell of data space at an aligned address.
name is referred to as a variable.
name Execution: ( -- a-addr )
a-addr is the address of the reserved cell. A program is responsible for initializing the contents
of the reserved cell.
See: 3.4.1 Parsing, A.6.1.2410 VARIABLE


---
...Я работаю антинаучным аферистом...
Оставить комментарий
Имя или ник:
Комментарий: