LINUX.ORG.RU

Objective-C для программистов C++

 ,


0

0

Опубликован перевод цикла из трех статей, посвященных языку Objective-C. В цикле рассматриваются множество возможностей этого языка, в том числе и «продвинутые». Приводятся соответствующие аналогии (в случае наличия таковых) из языка C++.

>>> Перевод цикла



Проверено: Shaman007 ()
Последнее исправление: cetjs2 (всего исправлений: 1)

Ткнул в ссылку -- бац, баннер с надписью "пора худеть!". Намекает, зараза, чтоб я лучше молчал насчёт C++.

Demon37 ★★★★
()

> Приводятся соответствующие аналогии (в случае наличия таковых) из языка C++.

Хотя мне самому не нравятся эти метафоры. Но.

Тонко.

PolarFox ★★★★★
()

Качество перевода таково, что читать английский текст значительно приятнее. Русского осилил несколько абзацев, вот что бросилось в глаза:

> Objective-C является расширенным набором расширений над чистым C

Бгг.

> тулкит

инструментарий

> У неё также был хороший сторонний эффект, заключавшийся в том, что построитель интерфейса не хранил одно только описание интерфейса — он хранил последовательные объекты.

Не "сторонний", а "побочный". Не "последовательные", а "сериализованные". Следующее предложение про модель-представление-контроллер переводчики тупо не осилили.

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

Этот трюк не сработал, и, в конечном счете, обязали NeXT открыть код компилятора. Однако, не обязали открыть код рантайм библиотеки, что означало бесполезность компилятора на любых других платформах.

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

> Намекает, зараза, чтоб я лучше молчал насчёт C++.

Уж не знаю что у вас там насчет C++, но следующий абзац как бы намекает о качестве Objective-C компиляторов.

> The current code for Objective-C in GCC depends on the branch you use. NeXT kept its own version, which has a barely-maintainable mess with no layering and everything in a single source file, and only supports the NeXT runtime. Mainline GCC includes a completely unmaintainable mess, based on the NeXT code but littered with #ifdefs for the GNU runtime.

Собственно, этим абзацем можно и заканчивать. Писать на _таком_ будет только полный псих^W^W альтернативно одаренный.

Manhunt ★★★★★
()

> Objective-C был спроектирован как минимальный набор расширений для C

> Objective-C является расширенным набором расширений над чистым C

Парни, вы определитесь все-таки, минимальный, или раширенный, или что у вас там... :D

Manhunt ★★★★★
()

Спасибо за все замечания. Буду работать и рад услышать ещё критику/пожелания.

Demon37, это AdSense такое генерирует, вроде как «контекстная реклама». Где он там такой контекст увидел — ума не приложу, сам в шоке был, когда увидел, что 7 из 10 объявлений на странице со статьей про Objective-C — про похудание.

n0xi0uzz
() автор топика

Очень интересно -- спасибо.

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

Тут дело в разнице между «был спроектирован как» и «является». Времена-то разные. Поэтому и был сначала минимальным, а потом стал — расширенным.

n0xi0uzz
() автор топика

Судя по комментам, переводили "Промтом" и редактировали Вордовым спелчекером. гыг :) Это не перевод, господа, это ТУПАЯ ТРАНСЛЯЦИЯ.
Перевод, любой, пишут РУКАМИ. Предварительно имея квалификацию в рассматриваемой области, чтобы избегать ахинестичной терминологии и корректировать "очевидные" для автора недоговорки.

Брался как-то переводить хелп к языку Ди. Воистину, писали Жучка, Внучка и Бабка - каждый по абзацу, а в целом - инфаркт Достоевского. :) Приходилось пояснять и даже вводить новые термины, иначе засрут окончательно мозги новичкам. До сих пор передёргивает от опупительно умного слова static, коее применяют атбалды.

matumba ★★★★★
()

"валидный"... млять, "ХиФи, Клюева, последняя модель!". :)))))
Не "валидный", а "корректный"!

matumba ★★★★★
()

перевод - незачёт
Objective-C не впечатляет особо, те же грабли, только в профиль, вот D куда интереснее

PayableOnDeath
()

Добавил в букмарки неглядя

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

matumba, поверьте, переводили руками, а не «Промтом». Странно, что вы не можете отличить. Причем переводили несколько дней, просто для того, чтобы в рунете появилось больше и причем уникальной документации.

Что касается слова «валидный» — поверьте, оно давно уже в русском языке широко используется. Тем не менее, оно было заменено для соблюдения целостности на предложенный вариант. Спасибо за замечание.

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

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

>matumba, поверьте, переводили руками, а не «Промтом».

за "времена запуска" однозначный зачёт. Вы переплюнули Промпт :)

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

> Если бы ты видел, какие для него ябл наделал фреймворки, ты бы плевался от одного упоминания C#

C# мой хлеб. Хлебом не плюются :-P
И если честно, я слабо представляю что там за фантастические фреймворки без которых прекрасно работается :)

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

geek, действительно переплюнули :). Спасибо за замечание.

n0xi0uzz
() автор топика

Очень интересно, с удовольствием прочел.

А про @defs я даже и не знал. Но на практике пользы от него и не очень много.

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

> The current code for Objective-C in GCC depends on the branch you use. NeXT kept its own version, which has a barely-maintainable mess with no layering and everything in a single source file, and only supports the NeXT runtime. Mainline GCC includes a completely unmaintainable mess, based on the NeXT code but littered with #ifdefs for the GNU runtime.

> Собственно, этим абзацем можно и заканчивать. Писать на _таком_ будет только полный псих^W^W альтернативно одаренный.

Хм. Однако GNUstep, похоже, неплохо себя чувствует на этом Mainline GCC, который includes a completely unmaintainable mess :)

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

Переводчики, блин, самодеятельность... :(

>>> This trick didn't work, and NeXT was eventually required to release the code. However, releasing the source code for the runtime library wasn't required, which meant that the compiler wasn't useful on any other platforms.

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

> Этот трюк не сработал, и, в конечном счете, обязали NeXT открыть код компилятора. Однако, не обязали открыть код рантайм библиотеки, что означало бесполезность компилятора на любых других платформах.

Всё бы ладно, да только слово runtime оказалось сложноватым для перевода. Если это слово в английском не является определением, оно переводится как "среда выполнения", если является определением -- переводится сложным дополнением "времени выполнения" (именно так должно быть в приведённм выше фрагменте).

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

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

>> matumba, поверьте, переводили руками, а не «Промтом».

> за "времена запуска" однозначный зачёт. Вы переплюнули Промпт :)

Ничего они не переплюнул. Трактовка слова run как "запуск" взята... у микрософта из интерфейса всех версий венды, начиная с 95 (!!!). Так что не очень компетентный в разработке переводчик с урезанным TLIS под боком именно такое и мог выдать.

Orlusha ★★★★
()
Ответ на: Переводчики, блин, самодеятельность... :( от Orlusha

> Сложность в том, сто на самом деле ни о какой среде выполнения (как в яве) здесь речь не идёт, а автор употребляет слово runtime корайне неаккуратно.

Применительно к C и C++ слово runtime используется довольно часто. Его можно встретить в стандарте c++ (iso/iec 14882). Его можно встретить в msdn. Или вот еще пример:

> The term C run-time library is used on some platforms to refer to a set of base libraries, which may be distributed in dynamically linkable form with an operating system (with or without header files), or distributed with a C compiler.

В книжке Страуструпа говорится об "runtime type information", что переводят как "информация о типе на этапе выполнения".

Ну а "рантайм" я написал потому, что именно это слово используется повсеместно в сабжевом переводе. И мне лично глаз не режет.

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

> Так что не очень компетентный в разработке переводчик с урезанным TLIS под боком именно такое и мог выдать.

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

Manhunt ★★★★★
()
Ответ на: Переводчики, блин, самодеятельность... :( от Orlusha

> Всё бы ладно, да только слово runtime оказалось сложноватым для перевода. Если это слово в английском не является определением, оно переводится как "среда выполнения", если является определением -- переводится сложным дополнением "времени выполнения" (именно так должно быть в приведённм выше фрагменте).

> Сложность в том, сто на самом деле ни о какой среде выполнения (как в яве) здесь речь не идёт, а автор употребляет слово runtime корайне неаккуратно. Именно это обстоятельство я и хотел бы добавить к посту г-на Manhunt, с которым полностью согласен, даже более того, сказал бы, что он несколько приукрасил ситуацию, -- она ещё хуже...

Интересно, эту ерунду вы сами выдумали, или у кого подсмотрели?

http://en.wikipedia.org/wiki/Runtime

- занимайтесь ликбезом. Автор статьи использовал термин "runtime library" совершенно верно.

Spectr ★★★
()

+1 Да, перевод не без шероховатостей. Но, спсибо за труд. Жаль, что в Linux хреново исполбзуется Obj-C, ну хм-хм посмотрим что та с Etoile.

Остальное либо не Linux, либо зря.

Автору поста спасибо :)

sleepflint ★★★
()

Спасибо

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

А вот статей про это на грани гениальности расширение С/С++ на русском не хватала

Меня последнее время интересует obj-c++, по идее это должно дать очень МОЩНЫЕ возможности разработки

namezys ★★★★
()

>В ранних 1990-х

боже мой, кто это переводил?!

fizteh
()

>// C++

>Object->function();

>// C

>function(Object);

>Версия на C++ длиннее, но не дает каких-либо семантических отличий.

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

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

окак. толково и доступно, перевод читать не буду =P

val-amart ★★★★★
()
Ответ на: комментарий от n0xi0uzz

>...появилось больше и причем уникальной документации...

и

>...как следствие и во-вторых...

мне кажется, вы даже шамана способны переплюнуть, не то что промт

очень большие проблемы с согласованием всего со всем.

в статье:

>... набор минимальных расширений к C для просто поддержки объектов ...

«просто для»

райнтайм-библиотека пишется через дефис

>Это может выглядеть странным для тех, кто более близок к синтаксису C

я не близок к синтаксису Си, но мне близок синтаксис Си.

>Это работает немного быстрее, но делает оптимизацию, вроде последующего добавления кода в будущем гораздо сложнее.

Это вообще не по-русски. Предложение с семантической точки зрения лишено смысла. Дело опять таки в согласовании: «Это работает немного быстрее, но усложняет последующую оптимизацию или добавление нового кода». Так ведь немно лучше?

«приведение» — оно а не он! :)

множественное наследования -> ние

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

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

И еще, жалко что сайт не на wiki.

Ingwar ★★★★★
()

>objective-c - питон с указателями.
Дикий ублюдок Smalltalk'а и C.

WatchCat ★★★★★
()

>Метод -map, примененный к массиву, возвращает объект прокси с помощью метода forwardInvocation:, реализованного подобным образом

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

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

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

блин, у самого с русским нелады. Объект-прокси, который возвращается сообщением map, должен определять метод forwardInvocation:. А по тексту получается так, что если массиву послать сообщение map, то оно с помощью forwardInvocation: вернёт прокси.

adarovsky ★★★★
()

Вот это обрадовало:

> Вы можете указать, что указатель должен указывать

kost-bebix ★★
()

насколько я понял, в сабжевом языке есть рудимен^W минимальная поддержка синхронизации в многопоточной среде из коробки (@synchronized); и не надо на каждый чих взывать к средствам операционной системы и/или сторонним библиотекам.

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

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

: > с++ - ассемблер с классами

: > objective-c - питон с указателями.

: С# - попа с ручкой


гаааааа :) Ну вы жгуны, братва! :)))))))

Java - кофе, пропущенное через sun.

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

> Непонятно только, есть ли у него какие нибудь стандарты, или каждый гнет в свою сторону?

В общем то языковой стандарт один

А вот реализации могут быть какие угодно

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

> А вот реализации могут быть какие угодно

ну, правильно, - т.е. не соответствующие стандарту. Это я к тому, что код с ГНУстеп на яббловскую платформу не перенести без утомительной процедуры пилинга. Как и обратно.

d_a ★★★★★
()

синтаксис objective-с как бы намекает на денатурат, который пили его (obj-c) создатели

frame ★★★
()

Хорошая статья! Реклама мегарулезной макоси.

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

> синтаксис objective-с как бы намекает на денатурат, который пили его (obj-c) создатели

Если фрейм-кун в молодости программировал на Смолтоке, то такую глупость бы не напейсал. В книжке Mac OS X Leopard: Beyond the Manual обосновывается, чем смолтокоподобный синтаксис лучше С-приплюснотого.

Впрочем, кульхакеры-студиоузы (типа "крутые линуксоиды"), еле осилившие на 1-ом курсе АЯП Цэ++, автору которого "место в дурке или на погосте" (с), как говаривал Профессор Лугоффский, даже троллить грамотно (т.е. доставляюще) не умеют.

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

>Если фрейм-кун в молодости программировал на Смолтоке, то такую глупость бы не напейсал.

Да, фрейм-кун в молодости не программировал на Смолтолке и не смотрел онемэ, что вообще-то его не сильно огорчает (скорее наоборот)

>Впрочем, кульхакеры-студиоузы (типа "крутые линуксоиды"), еле осилившие на 1-ом курсе АЯП Цэ++, автору которого "место в дурке или на погосте" (с), как говаривал Профессор Лугоффский, даже троллить грамотно (т.е. доставляюще) не умеют.

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

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

>Если фрейм-кун в молодости программировал на Смолтоке, то такую глупость бы не напейсал. В книжке Mac OS X Leopard: Beyond the Manual обосновывается, чем смолтокоподобный синтаксис лучше С-приплюснотого

Выбрось исключение на Obj-C, не перехватывай его и посмотри на стек. Узри, что всё завёрнуто в исключения C++, и сделай вдоль, пожалуйста, нелюбитель праативных сиплюсов.

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