среда, 21 сентября 2016 г.

Задачи по программированию на языке C++, часть 2 (обновление)

Значительное дополнение, обновление и исправление текста и примеров кода.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Googleтекст, архив кодов
Сейчас это редакция 40 от 21.09.2016, страниц 90.
Задач с примерами на сегодня представлено 57 (хотя посчитать это достаточно проблематично, поскольку ряд задач имеет по несколько представленных вариантов решений).

Исправления главным образом касались грамматики и опечаток. Но дополнения (относительно первоначальных редакций) весьма обстоятельные.


вторник, 13 сентября 2016 г.

Задачи по программированию на языке C, часть 1 (обновление)

Заметное обновление текста и примеров кода.

Скачать свободно последнюю актуальную редакцию текста и архива кодов можно здесь:
Yandexтекст, архив кодов
Googleтекст, архив кодов
Сейчас это редакция 39 от 14.11.2016, страниц 106.
Задач с примерами на сегодня представлено 102.

Но самое главное изменение: все и любые планировавшиеся изменения и расширения под стандарт C11 - отменены. По моему мнению, по результатам достаточно щепетильного изучения стандарта - это мёртворожденное творение, состряпанное в угоду и на заказ крупнейших IT корпораций в их шкурных интересах. Но предполагаю, что никто это использовать на практике не станет.

суббота, 10 сентября 2016 г.

Регулярные выражения C/C++

Это фактически продолжение предыдущего текста Языковая локализация. И планировалось оно как небольшая глава в тот общий текст. Но разбирательство потянуло за собой всё большее расширение объёма. Вопрос изначально стоял узко: как поведут себя инструменты обработки регулярных выражений с Unicode/UTF-8 строками? Тем более, когда мультибайтные Unicode символы символы станут появляться и в шаблонах регулярных выражений и в самих сопоставляемых строках. Ну, например, что и как происходит вот в таком простейшем случае:

$ echo "слово слава слива" | grep сл[о,а]
слово слава слива

Там всё не так однозначно просто ... и некоторые детали не ясны до конца. Связано это с тем, что все инструменты (библиотеки) сопоставления с регулярными выражениями в C и в C++ до стандарта 2011г. не могут работать со строками широких локализованных символов (wchar_t[], wstring). По крайней мере, я таких не знаю.

Что из этого получается, можете посмотреть в предварительной редакции текста (и архив программных кодов к нему, естественно). Предварительная редакция потому, что материал в работе, по нему могут быть существенные дополнения (а могут и не быть ... если надоест).

Сам текст : на Yandex и на на Google
Редакция 05, от 10.09.2016, стр. 13.

Архив примеров кода на Yandex и на на Google

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


  

четверг, 1 сентября 2016 г.

Языковая локализация C/C++

Локализация программного кода под язык (например, русский) очень слабо описана. На то есть несколько причин:
  • Современное представление текстов в Unicode появилось достаточно поздно (1991г.), а представление Unicode в UTF-8 кодировке ещё позже (1992г., Кен Томпсон и Роб Пайк);
  • Ранние описания, например знаменитая книга по C K&R, естественно, не могут даже упоминать о проблеме языковой локализации...
  • А более поздние зарубежные (и переводные) издания обходят эти вопросы стороной - им оно не актуально ... и "до лампочки"...
  • отечественные же учебники только пересказывают то, что они прочитали в переводных изданиях.
А вопросы по этому поводу многократно задают. И в обсуждениях рассказываются совершенно чудовищные картины локализации ... складывающиеся в больном воображении в отсутствии информации.
Поэтому пришлось собрать в одно место то, что я знаю по этому поводу, и описать единым текстом.
Как и раньше, особенно расписывать я здесь не стану, а для интересующихся, пожалуйста - скачивайте описательный текст + архив примеров кодов, которые можно компилировать, изучать и с которыми можно экспериментировать.

Сам текст : на Yandex и на на Google
Редакция 09, от 01.09.2016, стр. 22.

Архив примеров кода на Yandex и на на Google

Всё, что здесь описано, касается локализации в коде C и C++. Но вопросы локализации, вообще то говоря, определяются не столько языком программирования, сколько операционной системой и её настройками. Поэтому локализация на других языках, скажем Python, полностью наследуют описываемые здесь принципы, и только изображаются средствами API этого языка. В будущем, возможно, я расширю текст примерами ещё на нескольких языках программирования ... хотя это достаточно тривиально после C/C++.

Всё, что хотелось бы обсудить, уточнить, замечания и предожения по тексту - обсуждаем здесь: локализация строк в C-коде.