Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Может не новость, но я только сейчас наткнулся


Автор: sidiakin 5.1.2013, 21:33
Вот http://www.roft.ru/page/Sozdateli-Ci-i-UNIX-ppiznayut-chto-pazygpali-ves-mip

Автор: feodorv 5.1.2013, 22:11
И что? Первое апреля растянулось до 25 мая...

Автор: EvilsInterrupt 5.1.2013, 22:31
sidiakin, 
Видя такие сообщения я сразу достаю wget и отключаю на итоговую папку антивирус. В надежде скачать новый сампл для реверсинга. Очень обижаюсь если его там нету...

Автор: kemiisto 5.1.2013, 22:56
Всё так и было. smile 

Автор: volatile 6.1.2013, 01:45
Что то там программа в виде пикчера - невозможно проверить компилируемость.
хотя на С можно конечно и не такое написать (как впрочем и на любом другом языке), при желании

вот это точно компилируецца, и достаточно полезную вещь кстати делает.
Код

int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c
-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}

как вы думаете что?
(не заглядывая http://codepad.org/CCcIbRfl )

Автор: NoviceF 6.1.2013, 09:25
Цитата(volatile @  6.1.2013,  02:45 Найти цитируемый пост)
как вы думаете что?


я думал квадратик нарисует  smile 

Автор: mes 6.1.2013, 15:45
Цитата(volatile @  6.1.2013,  00:45 Найти цитируемый пост)
 невозможно проверить компилируемость.

возможно )) не копипастом единым жив программист ))

Автор: volatile 6.1.2013, 23:40
Цитата(mes @  6.1.2013,  15:45 Найти цитируемый пост)
возможно )) не копипастом единым жив программист ))

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

Цитата
Мы остановились, добившись успешной компиляции следующего: 
for(;P("n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); 

Это не скомпилируецца! И даже не потому что здесь не определено что такое P(),R и еще куча других переменных
а потому что оператор R- это ошибка по любому!
Похоже статью писал какой-то двоечник-паскалевец, 2-ой день изучающий С.
И писано это (судя по паскалю, и другим названиям) еще во времена МS-DOS'a. 
В те далекие времена, кое-кому казалось, что паскаль мог составить конкуренцию С.

Автор: kemiisto 7.1.2013, 00:05
Цитата(volatile @  6.1.2013,  22:40 Найти цитируемый пост)
В те далекие времена, кое-кому казалось, что паскаль мог составить конкуренцию С.

Вы так говорите "казалось", как будто... smile 

Си сейчас "на коне". Но это эпоха уже заканчивается. Си, Лэди Гага и прочая низкопробная дрянь приходит и уходит. А Pascal ещё всех нас переживёт. smile 

Автор: bsa 8.1.2013, 00:22
kemiisto, паскаль сейчас используется только в качестве основы для Delphi и, возможно, для обучения программированию начинающих инженеров. На сколько я знаю, нынче популярны языки, производные от Си: C, C++, C#, Java/JavaScript, PHP... А вот производную паскаля на слуху я знаю только одну - Delphi. Не исключено, что Паскаль будет жить долго. Но только мне не верится, что он станет таким же популярным, как производные от C.

Автор: kemiisto 8.1.2013, 00:48
Цитата(bsa @  7.1.2013,  23:22 Найти цитируемый пост)
Но только мне не верится, что он станет таким же популярным, как производные от C. 

Я и не говорил, что он станет популярнее. Лишь переживёт. То есть С и прочие исчезнут как динозавры, а потомки Паскаля останутся. 

Автор: EvilsInterrupt 8.1.2013, 00:59
Прошу kemiisto.restart() smile

Автор: Фантом 8.1.2013, 01:09
Цитата(bsa @  8.1.2013,  01:22 Найти цитируемый пост)
На сколько я знаю, нынче популярны языки, производные от Си: C, C++, C#, Java/JavaScript, PHP... А вот производную паскаля на слуху я знаю только одну - Delphi. 

Вы только определитесь, что считать "производными".  smile Например, Java унаследовала от C в основном вид синтаксиса, по идеологии этот язык ближе к Паскалю.

Автор: baldina 8.1.2013, 01:42
Цитата(Фантом @  8.1.2013,  01:09 Найти цитируемый пост)
по идеологии этот язык ближе к Паскалю

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

обычно считается, что язык Java заимствовал у C++, SmallTalk, Scheme и повлиял на C#.
C++ - у С и Simula.
Pascal повлиял на Modula, Ada

и у них всех есть общий предок - Algol.

Добавлено через 3 минуты и 39 секунд
впрочем, есть и более ранний, повлиявший на всех (прямо или косвенно) - старый добрый фортран

Автор: kemiisto 8.1.2013, 02:13
Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
как может чисто ОО язык быть идеологически ближе к чисто процедурному? естественно, в предположении заимствований Java от C++ а не С.

Очевидно, что речь шла о том, что Java заимствовала идеи не столько из самого Паскаля, сколько из его потомка Оберона. Java - это Оберон с сишным синтаксисом и слитыми в едином экстазе концепциями модуля и класса. От С там только синтаксис. Унылый маркетинговый ход, который обеспечил достаточную популярность на ранних этапах.

Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
обычно считается, что язык Java заимствовал у C++, SmallTalk, Scheme и повлиял на C#.

Ещё раз - в Java заимствован из С только синтаксис. Никаким Смолтолком и Схемой там и не пахнет.

Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
C++ - у С и Simula.

Это верно.

Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
Pascal повлиял на Modula, Ada

Pascal - прямой предок Modula, хоть и не единственный, поэтому, он очевидно на неё повлиял. А вот на Аду Паскаль повлиял крайне опосредованно.

Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
и у них всех есть общий предок - Algol.

Да, все современные хоть сколь-нибудь заметные императивные языки растут из Алгола.

Цитата(baldina @  8.1.2013,  00:42 Найти цитируемый пост)
впрочем, есть и более ранний, повлиявший на всех (прямо или косвенно) - старый добрый фортран 

А вот здесь - нет. Старый-"добрый" ФОРТРАН был как раз почти полной противоположностью АЛГОЛа. Собственно АЛГОЛ изначально создавался в противовсе ФОРТРАНу, который и алгоритмическим то языком назвать, простите за тавтологию, язык не поворачивался. Что собственно, в названии АЛГОЛа и отражено.

Так что нет. Только АЛГОЛ, только императив! smile 

Автор: Фантом 8.1.2013, 14:08
Цитата(baldina @  8.1.2013,  02:42 Найти цитируемый пост)

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


Точно так же, как "Java потомок C".  smile Потомок, но не непосредственный. На самом деле Java - это Оберон (с некоторыми элементами Модулы-2, более раннего виртовского языка), снабженный C-образным синтаксисом. В принципе, во многом те же идеи использовались и при создании Delphi (точнее, тогда еще Object Pascal), так что и на него Java похож куда больше, чем на C++.

Цитата(baldina @  8.1.2013,  02:42 Найти цитируемый пост)

Pascal повлиял на Modula, Ada


На Модулы - да, а вот на Аду - не очень. Внешнее сходство синтаксиса есть, а вот идеологически он ближе к PL/1.

Цитата(baldina @  8.1.2013,  02:42 Найти цитируемый пост)

впрочем, есть и более ранний, повлиявший на всех (прямо или косвенно) - старый добрый фортран 

Разве что в качестве образца "как делать не надо".  smile Фортран - великолепный язык, но для других целей.

P.S. М-да, похоже, что я почти дословно повторил то, что написал kemiisto.  smile  

Автор: baldina 8.1.2013, 15:20
Фантом, kemiisto, я с вами согласен, пожалуй. мне лишь не нравится сентенция об идеологии pascal в java.

Цитата(kemiisto @  8.1.2013,  02:13 Найти цитируемый пост)
АЛГОЛ изначально создавался в противовсе ФОРТРАНу

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

впрочем, я не настаиваю) часто авторы сами не знают, какие влияния имели место)

Добавлено через 11 минут и 43 секунды
 smile а может мне просто лениво спорить  smile 

Автор: Фантом 8.1.2013, 15:39
Цитата(baldina @  8.1.2013,  16:20 Найти цитируемый пост)
Фантом, kemiisto, я с вами согласен, пожалуй. мне лишь не нравится сентенция об идеологии pascal в java.


Увы, это факт.  smile Кстати, поскольку C# - это очередной "наш ответ Чемберлену" от MS, то и он является потомком C в основном в маркетинговом смысле.

Автор: EvilsInterrupt 8.1.2013, 16:05
Всегда удивлялся хУливарщикам. Пока авторы концепций, программ,систем между собой общаются и сообща решая какие-то конкретные вещи. Пользователи их продуктов вместо того чтобы описать что конкретно им мешает хорошо пользоваться и послать сообщение авторам, они же принимают как аксиому какое-либо неудобство или удобство, а потом ведут спор что одно лучше второго, третьего, .., ЭН-ного.

Сколько раз видел споры о том что лучше чистый С или С++ ? 
А между тем сам Страуструп очень тесно взаимодействовал с Денисом Ричи и при обсуждении. В книге "Б.Страуструп. Дизайн и эволюция C++ (2006).djvu" очень ясно на стр. 70 Страуструп пояснил в какой атмосфере рождался С++ , а на стр. 37 пояснил роль и стремления языка и почему нету Framework-ов!

Не меньше споров вижу и между лагерем Linux и FreeBSD пользователями. Хотя сами разработчики то не ограничиваются какой-либо одной системой и очень часто работают в разных проектах и ведь успешно!!!

К чему нужны хУливары? Какая конкретно от них польза?

Автор: baldina 8.1.2013, 16:23
Цитата(Фантом @  8.1.2013,  15:39 Найти цитируемый пост)
Увы, это факт.

боюсь, факт тут лишь обида Вирта, который дал исходники оберона посмотреть)))
оберон не вполне ОО язык, вся ОО в Java от C++. дык в чем идеология? в чистоте средств? допустим, но этого слишком мало. в сборщике мусора? это технологический прием, больше связанный с платформой, чем с языком. а больше ничего я не вижу.

Автор: bsa 8.1.2013, 17:45
Ну я и тролль... smile 

Автор: Фантом 8.1.2013, 20:28
Цитата(baldina @  8.1.2013,  17:23 Найти цитируемый пост)
в чистоте средств? допустим, но этого слишком мало. в сборщике мусора? это технологический прием, больше связанный с платформой, чем с языком. а больше ничего я не вижу. 

Начнем, например, с самой идеи платформы, к которой привязан язык.  smile 

Автор: volatile 8.1.2013, 23:20
Наверное стоит пожалеть фанатов паскаля, раз уж им приходицца упавать на java, в качестве приемника..
Дескать это только внешне сын похож на соседа, но глубоко в душе весь в отца...
Мда уж....

Автор: kemiisto 8.1.2013, 23:26
baldina, как Вам уже написали, идея некоторого промежуточного представления кода, которое переносимо, так как исполняется некой виртуальной машиной, была реализована Виртом уже для языка Pascal. Промежуточный язык именовался p-code, а виртуальная машина (внезапно!) p-code machine. 

А на самом деле эта идея была реализована примерно на 10 лет раньше для языков Euler (кстати, Виртом с коллегами) и BCPL. Последнее крайне занятно, так как язык B, который позже выльется в язык С, был всего-навсего урезанной версией BCPL. Урезали BCPL только по той причине, что в распоряжении у Томпсона и Ричи были крайне слабые машинки DEC PDP-7 и (позже) PDP-11 с очень маленьким объёмом памяти. Среди прочего отказались и от идеи промежуточного представления кода и исполнения его виртуальной машиной. Именно таким образом, B а вслед за ним и C оказались жёстко привязанными к железу. Показательный, кстати, момент. Язык C не проектировался как переносимый. Он вообще не проектировался. Он рождался в муках по выпиливанию из одного языка всего невмешяющегося в пямать совершенно определённого компьютера. И если Вы думаете, что таким образом можно было создать что-то хорошее... Я тебя слепила из того, что было... Ну, да ладно.

Добавлено через 5 минут и 20 секунд
Цитата(volatile @  8.1.2013,  22:20 Найти цитируемый пост)
Наверное стоит пожалеть фанатов паскаля, раз уж им приходицца упавать на java, в качестве приемника..

Никто Java приемником Pascal не называл. Речь о том, что Java значительно ближе к потомкам Pascal, чем к C. У неё только синтаксис С-шный, а он (в определённым смысле) вторичен. И потом, где Вы уведили упавание?

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

Автор: alexSl 9.1.2013, 09:34
Цитата(kemiisto @  8.1.2013,  23:26 Найти цитируемый пост)
Он рождался в муках по выпиливанию из одного языка всего невмешяющегося в пямать совершенно определённого компьютера. И если Вы думаете, что таким образом можно было создать что-то хорошее... 

Я беру камень и отсекаю всё лишнее. (В ответ на вопрос: «Как вы делаете свои скульптуры?») - http://ru.wikiquote.org/wiki/%D0%9C%D0%B8%D0%BA%D0%B5%D0%BB%D0%B0%D0%BD%D0%B4%D0%B6%D0%B5%D0%BB%D0%BE_%D0%91%D1%83%D0%BE%D0%BD%D0%B0%D1%80%D1%80%D0%BE%D1%82%D0%B8

Автор: kemiisto 9.1.2013, 11:09
Цитата(alexSl @  9.1.2013,  08:34 Найти цитируемый пост)
Я беру камень и отсекаю всё лишнее.

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

Начнём с того, почему же эта цитата не к месту. Дело в том, что у слова "лишний" есть http://dic.academic.ru/dic.nsf/ogegova/99610.
Цитата

1. Избыточный, остающийся сверх известного количества.
2. Ненужный, бесполезный.
...


Очевидно, что скульптор, создавая некий художественный образ из камня, отсекает всё избыточное. Микеланджело выступил в роли Капитана Очевидность, ответив таким образом на совершенно идиотский вопрос. Эх, журналисты... smile 

А в контексте нашей беседы о проектировании языков программирования "лишний" столь же очевидно означает "ненужный". Бритва Оккама шлёт нам пламенный привет. Так вот, есть две большие разницы между ситуацией, когда с целью упрощения языка ведёться многолетняя целенаправленная работа по идентификации и уничтожению лишних (сиречь ненужных) сущностей и когда этот процесс происходит абсолютно неконтролируемо под давлением внешних обстоятельств (малый объём ОЗУ). В первом случае имеем дело с проектированием, во втором - ни о каком проектировании и речи быть не может.

Автор: alexSl 9.1.2013, 13:25
Цитата(kemiisto @  9.1.2013,  11:09 Найти цитируемый пост)
Так вот, есть две большие разницы между ситуацией, когда с целью упрощения языка ведёться многолетняя целенаправленная работа по идентификации и уничтожению лишних (сиречь ненужных) сущностей и когда этот процесс происходит абсолютно неконтролируемо под давлением внешних обстоятельств (малый объём ОЗУ). В первом случае имеем дело с проектированием, во втором - ни о каком проектировании и речи быть не может. 

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

Автор: bsa 9.1.2013, 13:30
alexSl, вообще-то, и то, и то селекция. А естественный отбор - это то, что происходит со времен первых компьютеров и языков программирования. Одни языки приходят, другие уходят, а третьих существуют только в узких кругах... Надо признать, что в свое время С выиграл естественный отбор. А что будет в будущем - никто не знает.

Автор: baldina 9.1.2013, 13:30
Цитата(kemiisto @  8.1.2013,  23:26 Найти цитируемый пост)
baldina, как Вам уже написали, идея некоторого промежуточного представления кода, которое переносимо,

идея некоторого промежуточного представления кода и язык вещи сильно разные. сравните например Java, C#, F#, Scala.
идея язык+унифицированная платформа как единого целого интересна, не спорю, хотя (см. выше) на одной платформе может быть несколько языков. 
заметьте, любой интерпретируемый язык имеет плаформу (часто индивидуальную), однако и такие языки сравнивают. языки, а не платформы.

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

язык это идеология, подход. с такой точки зрения java и oberon, не говоря уж о pascal, весьма далеки. а java и C++ близки. имхо, конечно, так что с удовольствием выслушаю нечто конструктивное.

Добавлено через 2 минуты и 13 секунд

Цитата(kemiisto @  8.1.2013,  23:26 Найти цитируемый пост)
Никто Java приемником Pascal не называл.

Цитата(Фантом @  8.1.2013,  01:09 Найти цитируемый пост)
Java унаследовала от C в основном вид синтаксиса, по идеологии этот язык ближе к Паскалю


Автор: kemiisto 9.1.2013, 16:20
Цитата(alexSl @  9.1.2013,  12:25 Найти цитируемый пост)
Первый случай я бы назвал селекцией, а второй - естественным отбором.

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

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

А в случае с С не было такой цели. Там была чисто практическая цель портирования BCPL на слабые машины. В итоге это всё вылилось в создание языка B, а затем и C. Я вообще не уверен можно ли тут говорить об отборе...

Автор: kemiisto 9.1.2013, 16:59
Цитата(baldina @  9.1.2013,  12:30 Найти цитируемый пост)
идея некоторого промежуточного представления кода и язык вещи сильно разные. сравните например Java, C#, F#, Scala.

Нет, нет. Мы сразу абсолютно однозначно (и я это подчёркивал) обсуждаем алголопожобные языки. То есть императивные. Поэтому не надо нам ни (никому ненужной smile ) функциАнальщины, ни монструозных гибридов. Вот и сравни Java и какой-нибудь другой императивный язык под JVM. Разница тут будет чисто синтасическая. Синтаксис в данном случае как раз будет вторичен.

Конечно, если включить в рассмотрении какой-нибудь функциАнальный язык, то синтаксис уже вторичен не будет. При таком сравнении уже нужно понимать, что синтаксис будет определять уже сам способ мышления программиста. Поэтому, повторюсь, мы ограничимся императивными языками, когда синтаксис (до какой-то степени) будет вторичен. Благо, мы можем наложить такое ограничение на дискуссию с чистой совестью и почти без последствий, ибо о(б)суждаемые ЯП (C, C++, Pascal, Oberon, Java) императивны.

Цитата(baldina @  9.1.2013,  12:30 Найти цитируемый пост)
идея язык+унифицированная платформа как единого целого интересна, не спорю, хотя (см. выше) на одной платформе может быть несколько языков.

Безусловно. Но мы говорим только за Java. Это один язык. То, что впоследствии (благодаря популярности Java) появилось множество языков под JVM не меняет дело. Изначально JVM писалась чисто и только под Java. И, кстати, многие идеосинкрозии JVM отсюда и растут. Поэтому, кстати smile , при разработке своей JVM с пасьянсом и куртизанками MS так сильно концентрировалась на том, чтобы платформа была максимально независима от (пускай и основного) языка, что отразилось даже в названии CLR.

Но, повторюсь, с JVM была совсем иная история.
 
Цитата(baldina @  9.1.2013,  12:30 Найти цитируемый пост)
заметьте, любой интерпретируемый язык имеет плаформу (часто индивидуальную), однако и такие языки сравнивают. языки, а не платформы.

Опять же, не думаю, что это имеет какое-то отношение к нашему разговору. Интерепретатор он на то и интерпретатор, что там не нужно ни промежуточное представление кода, ни виртуальная машина для его исполнения.

Цитата(baldina @  9.1.2013,  12:30 Найти цитируемый пост)
я полагал речь таки идет о сравнении языков без учета платформы, хотя бы потому, что С/С++ таковой не имеют, а программист, по большому счету, о платформе может и не быть в курсе.

Дык о том и речь, что не имеет. Это же ключевое различие, а Вы его сразу отметаете. И как Вы собираетесь сравнивать Java в отрыве от платформы? Это бессмысленно. Там останется только синтаксис. А он мало того, что вторичен, он банально (почти) одинаков. И сравнивать то особо нечего.

Цитата(baldina @  9.1.2013,  12:30 Найти цитируемый пост)
язык это идеология, подход. с такой точки зрения java и oberon, не говоря уж о pascal, весьма далеки. а java и C++ близки. имхо, конечно, так что с удовольствием выслушаю нечто конструктивное.

Нет, нет, нет и ещё раз нет. С точностью до наоборот. Java существенно ближе к Оберону, чем к С++ с точки зрения идеалогия, чтобы Вы под ней не понимали.

Вот, смотрите. Первой будет идти характеристика общая для Java и Oberon, затем характеристика C++.
  • Промежуточное представление кода и исполняющая его виртуальная машина против компиляции в машинный код на каждой платформе.
  • Раздельная компиляция (separate compilation) против независимой компиляции (independent compilation). Разница существенная, между прочим. Вот http://pplchapter8.tripod.com/compile.htm можете посмотреть, о чём речь. Впрочем, я именно Вам уже это пытался объяснить, как мне кажется.
  • Динамическое связывание против статического связывания.
  • Только процедурное и ОО программирование против всего, что пожелаете. Да, в Java есть процедурное программирование. Из-за того, что класс выполняет функции модуля оно просто скрыто. Каждый раз, когда Вы пишете статическую функции и, не зная куда её деть, создаёте какой-то недокласс - это и есть процедурное программирование на Java. smile 
  • Только полностью автоматическое управление памятью (сборка мусора) против ручного и (всё-таки) полуавтоматического (умные указатели).

Хватит для начала?

Автор: baldina 9.1.2013, 17:34
Цитата(kemiisto @  9.1.2013,  16:59 Найти цитируемый пост)
Это же ключевое различие, а Вы его сразу отметаете.

ну собственно все расхождение в этом.

я когда-то пытался (безуспешно) приобрести книгу по C#, где был бы описан в первую очередь язык, а CRL во вторую (или вообще не описан).
я понимаю, почему не нашел. понимаю, насколько сильна связь подобных языков с платформой. понимаю исторические причины вида java (как и C++).
но когда я пишу на языке, неважно каким образом исполняемым, я думаю на этом языке. а встроенные структуры/алгоритмы воспринимаю как прилагаемые библиотеки (что вполне естественно, т.к. часть структур и алгоритмов мы таки пишем сами).

что касается раздельной/независимой компиляции, я все безусловно понимаю. это, пожалуй, действительно серьезный аргумент, и я его пропустил. но опять же, на определенном уровне по большому счету неважно, что писать - import, #include или uses, точнее, что при этом думать.

Добавлено через 2 минуты и 54 секунды
 smile 
Цитата(kemiisto @  9.1.2013,  16:20 Найти цитируемый пост)
инженерная деятельность - деятельность не просто с предсказуемым, а с заранее определённым результатом

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

Автор: mes 9.1.2013, 20:39
Цитата(kemiisto @  9.1.2013,  15:59 Найти цитируемый пост)
 И как Вы собираетесь сравнивать Java в отрыве от платформы? Это бессмысленно. 

солидарен, платформы надо сравнивать вне сравнений языков ))
Цитата(kemiisto @  9.1.2013,  15:59 Найти цитируемый пост)
 Там останется только синтаксис.

так его выразителеность и есть суть языка, все остальное возможности/особенности среды выполнения..

потому яву как язык надо сравнивать с другими языками ява-машины.. шарп с с++ сравнивается только в cli-шном исполнении.. 
в противном случае паскаль с с++ одно и то же , ибо отличаются только синтаксисом smile

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

Автор: Фантом 9.1.2013, 23:02
Цитата(mes @  9.1.2013,  21:39 Найти цитируемый пост)

так его выразителеность и есть суть языка, все остальное возможности/особенности среды выполнения..

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

Автор: mes 10.1.2013, 00:18
Фантом, может и служит )

Автор: drug007 17.1.2013, 06:17
Цитата(Фантом @  9.1.2013,  23:02 Найти цитируемый пост)
У всякого тьюринг-полного языка (а все обсуждаемые к этой категории относятся) выразительность максимально возможная. Так что критерием это служить не может.

Не уверен, но вроде как наличие миксинов в языке никак не влияет на полноту по Тьюрингу (ну если только в compile-time), однако в некоторых ситуациях позволяет элегантно решить задачу. Т.е. позволяет программисту выразить свою мысль просто и доступно, ближе к терминам прикладной задачи, а не языка. Т.к. программы пишутся для людей в первую очередь, это позволяет код сделать читабельным, а значит легким для сопровождения, а значит более эффективным. Ассемблер-то тоже тьюринг полный. Чем больше язык позволяет оперировать ближе к терминам прикладной задачи, тем он эффективнее - вот в этом я уверен на 100%. А тут тьюринг-полноты не достаточно.

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

Автор: Фантом 17.1.2013, 19:23
Цитата(drug007 @  17.1.2013,  07:17 Найти цитируемый пост)
Не уверен, но вроде как наличие миксинов в языке никак не влияет на полноту по Тьюрингу (ну если только в compile-time), однако в некоторых ситуациях позволяет элегантно решить задачу. Т.е. позволяет программисту выразить свою мысль просто и доступно, ближе к терминам прикладной задачи, а не языка. Т.к. программы пишутся для людей в первую очередь, это позволяет код сделать читабельным, а значит легким для сопровождения, а значит более эффективным. Ассемблер-то тоже тьюринг полный. Чем больше язык позволяет оперировать ближе к терминам прикладной задачи, тем он эффективнее - вот в этом я уверен на 100%. А тут тьюринг-полноты не достаточно.


Это совершенно правильно. Но это не "выразительность" в терминологии  mes, она определяется совсем не тем, описываются операторные скобки как begin..end или {..}.  smile 

Автор: mes 17.1.2013, 21:42
Цитата(Фантом @  17.1.2013,  18:23 Найти цитируемый пост)
Но это не "выразительность" в терминологии  mes, она определяется совсем не тем, описываются операторные скобки как begin..end или {..}.

 smile позвольте уточнить, "выразительность" в терминологии mes, это описание операторных скобок через {...} ?  а то я русский подзабыл..

Автор: drug007 18.1.2013, 06:36
Цитата(Фантом @  17.1.2013,  19:23 Найти цитируемый пост)
Это совершенно правильно. Но это не "выразительность" в терминологии  mes, она определяется совсем не тем, описываются операторные скобки как begin..end или {..}.  

Как я понял, Вы считаете за выразительность способность языка каким-либо образом (не важно, каким - лишь бы был) выразить все возможные варианты - поэтому Вы и опираетесь на тьюринг-полноту. А мне показалось, что mes имел в виду, что выразительность языка это его способность кратко, емко и по существу выразить то, что нужно программисту (например, я именно так представляю выразительность).
Я правильно вас обоих понял?

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

Автор: Фантом 18.1.2013, 10:22
Цитата(drug007 @  18.1.2013,  07:36 Найти цитируемый пост)
Как я понял, Вы считаете за выразительность способность языка каким-либо образом (не важно, каким - лишь бы был) выразить все возможные варианты - поэтому Вы и опираетесь на тьюринг-полноту. А мне показалось, что mes имел в виду, что выразительность языка это его способность кратко, емко и по существу выразить то, что нужно программисту (например, я именно так представляю выразительность).
Я правильно вас обоих понял?

С точностью до наоборот. 

Автор: baldina 18.1.2013, 11:35
Цитата(Фантом @  9.1.2013,  23:02 Найти цитируемый пост)
У всякого тьюринг-полного языка (а все обсуждаемые к этой категории относятся) выразительность максимально возможная

кажется все тут выразительность понимают по разному. если выразительность синоним возможности реализовать вычислимую функцию, то и brainfuck выразителен.
однако традиционно под выразительностью ЯП понимают его синтаксические возможности, т.е. удобство для человека.

Автор: Фантом 18.1.2013, 17:02
Цитата(baldina @  18.1.2013,  12:35 Найти цитируемый пост)
однако традиционно под выразительностью ЯП понимают его синтаксические возможности, т.е. удобство для человека. 

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

Автор: baldina 18.1.2013, 17:47
можно пример, когда удобно писать, но неудобно читать и наоборот?

Автор: drug007 18.1.2013, 17:51
Цитата(Фантом @  18.1.2013,  17:02 Найти цитируемый пост)
В том и проблема, что удобство для человека может быть разным. Можно сделать так, чтобы удобно было писать код, а можно так, чтобы его удобно было читать и поддерживать. 

По-моему это одно и то же. Как можно удобно писать код, который неудобно читать и поддерживать?

 smile  одно предположение - тупо фигачить наугад по клавиатуре десятью пальцами - писать удобно, но сопровождать...  smile 

Автор: Фантом 18.1.2013, 19:03
Цитата(baldina @  18.1.2013,  18:47 Найти цитируемый пост)
можно пример, когда удобно писать, но неудобно читать и наоборот? 

Два классических примера: Perl и Ada.

Автор: baldina 19.1.2013, 19:57
позиция ясна, но согласиться трудно. 

поясню:
Код

x = a ? b : c;

удобно как писать, так и читать. последнее с оговоркой: для тех, кто в теме. ну а если кто не в теме, ему писать/читать рано.

Код

x = (a < b) || (b > c) && (a < d) ? a=c-b, ++b : a -= d, --c;

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

Добавлено через 3 минуты и 40 секунд
Думаю г....код можно выдавать и на Ада, и вообще любом языке

Автор: volatile 19.1.2013, 23:29
Цитата(Фантом @  18.1.2013,  19:03 Найти цитируемый пост)
Perl и Ada. 

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

Добавлено через 20 секунд
 smile 

Автор: Фантом 19.1.2013, 23:42
Цитата(baldina @  19.1.2013,  20:57 Найти цитируемый пост)

Думаю г....код можно выдавать и на Ада, и вообще любом языке 


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

Цитата(volatile @  20.1.2013,  00:29 Найти цитируемый пост)

Аду на самом деле очень трудно читать.


Цитата(baldina @  19.1.2013,  20:57 Найти цитируемый пост)
последнее с оговоркой: для тех, кто в теме. ну а если кто не в теме, ему писать/читать рано.

 smile 

Автор: volatile 19.1.2013, 23:51
Фантом, Читаемость кода - вещь очень субъективная...
Возможно кто-то скажет что ему удобно читать пёрл, и кстати, будет прав.
Ну удобно ему читать пёрл и что? Вам Аду удобно? да ради бога!
Не нужно лишь это выдавать за непреложную истину, в последней инстанции. smile 

Автор: Фантом 20.1.2013, 00:59
Цитата(volatile @  20.1.2013,  00:51 Найти цитируемый пост)
Читаемость кода - вещь очень субъективная...

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

Цитата(volatile @  20.1.2013,  00:51 Найти цитируемый пост)

Не нужно лишь это выдавать за непреложную истину, в последней инстанции. 

Вот именно.

Автор: mes 20.1.2013, 13:54
Цитата(Фантом @  19.1.2013,  23:59 Найти цитируемый пост)
 посмотрите, с чего именно началась эта ветвь дискуссии: с того, что мне старательно пытались доказать, что "синтаксическая выразительность"

нет, нет и нет. Ветка начиналась перечислениями плюсов платформы, которыми Ява красовалась перед С++.. На что был ответ, что не плюсы платформы, а именно выразительные свойства языка красят его. Что, как я позже понял, было воспринято, что сила выразительности определяется возможностью оперирования скобками.. 
Нет, нет и еще раз нет.. конечно наличие загромождающих конструкций, могут отвлекать внимание.. но в данном вопросе это действительно дело вкуса.. 
А вот к примеру С и С++ обладают обсолютно одинаковой "синтаксической выразительностью" однако выразительность языков совершенно разная..
Чтоб эффективно реализовать/выразить мысль на этих двух с виду похожих языках, нужно перестроить ход мыслей.... 
И речь была именно об этом ))

Автор: Фантом 20.1.2013, 14:46
Цитата(mes @  20.1.2013,  14:54 Найти цитируемый пост)
А вот к примеру С и С++ обладают обсолютно одинаковой "синтаксической выразительностью" однако выразительность языков совершенно разная..


Ой ли? В C++ несколько больше языковых конструкций. И, как хорошо известно, действительно можно писать на C++ как на "C с классами", а можно - как на C++. Во втором случае код даже визуально будет сильно отличаться от кода на C.

Автор: mes 20.1.2013, 19:03
Цитата(Фантом @  20.1.2013,  13:46 Найти цитируемый пост)
Ой ли? В C++ несколько больше языковых конструкций.

больше, но речь шла о скобках, кои как я понял, определяют по  Вашему ту самую "синтаксическую выразительность".. 

Цитата(Фантом @  20.1.2013,  13:46 Найти цитируемый пост)
 действительно можно писать на C++ как на "C с классами", а можно - как на C++.

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

Цитата(Фантом @  20.1.2013,  13:46 Найти цитируемый пост)
Во втором случае код даже визуально будет сильно отличаться от кода на C. 

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

Автор: Фантом 20.1.2013, 19:19
Цитата(mes @  20.1.2013,  20:03 Найти цитируемый пост)
Другой ход мыслей,  а не иные наименования определяют язык.


Именно. Только вот не Вы ли ранее писали вот это:

Цитата(mes @  9.1.2013,  21:39 Найти цитируемый пост)

потому яву как язык надо сравнивать с другими языками ява-машины.. шарп с с++ сравнивается только в cli-шном исполнении.. 
в противном случае паскаль с с++ одно и то же , ибо отличаются только синтаксисом


Автор: mes 20.1.2013, 22:40
Цитата(Фантом @  20.1.2013,  18:19 Найти цитируемый пост)
Именно. Только вот не Вы ли ранее писали вот это:

ну и ?  вполне возножно, что я не точно сформулировал, ибо русским, окромя этого сайта практически и не пользуюсь. Давайте разберем, с учетом контекста :
Цитата(mes @  9.1.2013,  19:39 Найти цитируемый пост)

Цитата(mes @  9.1.2013,  19:39 Найти цитируемый пост)
Там останется только синтаксис.


потому яву как язык надо сравнивать с другими языками ява-машины.. шарп с с++ сравнивается только в cli-шном исполнении.. 
в противном случае паскаль с с++ одно и то же , ибо отличаются только синтаксисом 


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

Цитата(mes @  9.1.2013,  19:39 Найти цитируемый пост)
при всем этом выразительность одного языка может быть неприемлимой/неудобной как для другой платформы, так и области программированния... потому это тоже должно быть уточнено перед спором.. 

именно выразительная способность, а не синтаксис. Не представляю, как синтаксис может быть нe приемлим для какой то платформы smile

Автор: Фантом 20.1.2013, 23:21
Так, собственно, и так уже понятно, что сошлись.   smile Итог такой:
1) Различие и сходство языков определяется не синтаксисом (это к вопросу о родственности Java и C);
2) удобство пользования языком от синтаксиса существенно зависит (но не только от него), однако этот фактор в основном субъективен (это к вопросу о преимуществе синтаксически-С-подобных языков над остальными).

Добавлено через 1 минуту и 51 секунду
Цитата(mes @  20.1.2013,  23:40 Найти цитируемый пост)
Не представляю, как синтаксис может быть нe приемлим для какой то платформы


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

Автор: mes 26.1.2013, 13:42
Цитата(Фантом @  20.1.2013,  22:21 Найти цитируемый пост)
 Различие и сходство языков определяется не синтаксисом (это к вопросу о родственности Java и C);

зачастую к синтаксису приписывают морфологию,  так как морфология имеет сильное влияние на синтаксис, и сопутствуют друг другу.. 
вот например конструкции :
Код

1. if (true) {}
2. IF(True) Then Begin End;

синтаксически разные , но морфологически схожи, а
Код

1. for(int i=0; i>-10 &&  i<10; ++i){...}
2. For i=0 To 10 Begin ... End

отличаются не только синтаксически, но и морфологически.. но видно что синтаксис конструкции 2. немного избыточен для реализации морфологии 1.
так если в конструкцию 1. добавить To, Step, Begin, End, но при этом сохранить морфологию, то конструкции останется родственной, в отличие синтаксически похожей констукции 2..

Добавлено @ 13:46
Цитата(Фантом @  20.1.2013,  22:21 Найти цитируемый пост)
удобство пользования языком от синтаксиса существенно зависит (но не только от него), 

тут опять же, смысл не в том что удобнее && или AND, это действительно дело вкуса , a о том, каким синтаксисом удобнее отразить логику языка.. 
Так например опять те же Begin с End добавить в С не сложно.. но зачем они там нужны ?

Автор: volatile 26.1.2013, 17:28
Цитата(mes @  26.1.2013,  13:42 Найти цитируемый пост)
1. for(int i=0; i &&  i<10; ++i){}
2. For i=0 To 10 Begin End

Цитата(mes @  26.1.2013,  13:42 Найти цитируемый пост)
синтаксис конструкции 2. немного избыточен для реализации морфологии 1.

сама конструкция 1 избыточна, ибо цикл ни разу не выполницца.
mes, Щас фанаты паскаля набегут и скажут что в паскале это запишецца как
Код

;


Автор: volatile 26.1.2013, 17:46
Код

somenumericvalue ++;

Разбудите в 3 часа ночи, в дупель пьяного программера С/С++ и спросите что это такое. Он ответит что это инкремент, и будет прав!

Код

somenumericvalue := somenumerivcalue + 1;


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

(Это по поводу легкого прочтения ады, паскакаля и прочих)
И кстати личные предпочтения здесь не причем.
Код объективно неудобно ни писать, ни тем более читать !

Автор: mes 26.1.2013, 19:43
Цитата(volatile @  26.1.2013,  16:28 Найти цитируемый пост)
ама конструкция 1 избыточна, ибо цикл ни разу не выполницца.

не выполнится из ошибки... бывает.. концентрировался на мысли, а нe коде.. исправил как оно хотелось.. 
volatile,  спасибо за внимательность smile

Цитата

Щас фанаты паскаля набегут и скажут

под конструкцией в моем посте подразумевается не приведенная законченная конструкция с циклом до 10, а конструкция языка for  smile

Добавлено через 5 минут и 59 секунд
Цитата(volatile @  26.1.2013,  16:46 Найти цитируемый пост)
Код объективно неудобно ни писать, ни тем более читать !

ну так, наверняка вместо
Цитата(volatile @  26.1.2013,  16:46 Найти цитируемый пост)
Код

somenumericvalue := somenumerivcalue + 1;

пишут Inc(somenumericvalue); или ?

Автор: volatile 26.1.2013, 20:10
Цитата(mes @  26.1.2013,  19:43 Найти цитируемый пост)
концентрировался на мысли, а нe коде.. исправил как оно хотелось.. 

mes, я то вас понял. Просто фанатам п., им палец в рот не клади, откусят smile 

Цитата(mes @  26.1.2013,  19:43 Найти цитируемый пост)
пишут Inc(somenumericvalue); или ?

Inc - это уже  позднее наслоение, неуклюжая попытка подражать С.
и вообще это функция, а не языковая конструкция.

И вы же понимаете , что я говорю не только об инкременте :
somenumericvalue  *= n;
somenumericvalue  += n;
somenumericvalue  -= n;
somenumericvalue  /= n;
somenumericvalue  %= n;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)