Как стать автором
Поиск
Написать публикацию
Обновить
97.72

Проектирование и рефакторинг *

Реорганизация кода

Сначала показывать
Порог рейтинга
Уровень сложности

язык D в реализации от GNU

Время на прочтение1 мин
Количество просмотров928
Behold, people. Свершилось. Язык программирования D — очередная попытка сделать из любимого C нормальный объектно-ориентированный язык — окончательно перестал быть частной инициативой его автора, Волтера Брайта (Walter Bright), и компании Digital Mars. Теперь и GNU предлагает собственную реализацию. Работы, начатые GNU в прошлом году, наконец привели к созданию компилятора, который способен пройти все тесты в The Computer Language Benchmarks Game.

D — это, если можно так выразиться, причёсанный вариант C++, который многое наследует от Java и Eiffel, но при этом остаётся полностью компилируемым в машинный код и хорошо оптимизируемым языком. О производительности и эффективности можно судить по тестам The Computer Language Benchmarks Game. И выглядит он при этом довольно симпатично, примеры программ можно посмотреть в статье на wikipedia — D (programming language).

Весьма недурно, если учесть, что кодировать на D проще и приятнее, чем на C++, а потенциал для оптимизации, скорее всего, не исчерпан. Посмотрим, что сделают ребята из GNU с этим языком.

Вот. Happy coding.

P.S. Прямые ссылки, к сожалению, указать не удаётся. Хабру глючит, но чрезе Google они быстро находятся.

C/C+: эти коварные наборы строк.

Время на прочтение6 мин
Количество просмотров7.2K
Многие «знают», что программирование на C/C++ позволяет получить программы, которые работают почти так же быстро, как программы, написанные на языке Assembler, а уж те, в свою очередь, быстры настолько, насколько это вообще возможно в теории.

На самом деле, конечно, это не совсем так (а в редких случаях — и совсем не так), но в целом программы на C/C++ действительно быстры, требуют немного памяти и запускаются мгновенно. Если их правильно написать.

Вот о том как правильно писать на C/C++ я и хотел бы немного поговорить. Сегодня я хочу обсудить вопрос о наборах строк. То есть о процедурах, позволяющих из числа получить строку, а из строки — число.

Где подобные списки встречаются? Ну, например, это могут быть списки токенов html, с которыми работает ваша программа. Или список команд, которые принимает ваш командный интерпретатор. Но, конечно, наиболее часто такие наборы возникают как списки всевозможных ошибок: strerror, gai_strerror, regerror и т.д. Думаю каждый программист встречался с подобной задачей хотя бы раз.

Хочу оговориться что дальнейшее описание впрямую применимо только к операционным системам, использующим формат ELF: Linux, MacOS, etc. В Windows или встраиваемых системах ситуация может быть слегка иной. Плюс я в этот раз ограничусь только прямой задачей (по числу получить строку) ибо она во-первых проще, а во-вторых многие решения обратной задачи содержат в себе прямую задачу как часть решения.
Читать дальше →

Сокращение уровня вложенности

Время на прочтение4 мин
Количество просмотров6.1K
Иногда от посторонних людей достаются большие процедуры, от которых появляется большая головная боль.
Например, когда мне досталась на переработку километровая процедура 1С. В целом, она выглядела
впечатляюще

Ревизия кода Ext JS/ GridView

Время на прочтение4 мин
Количество просмотров2.3K
В свое время я прибывал в уверенности, что код
js обычно не нужно писать так, чтобы он был
наиболее оптимальным. «Клиентская часть» — говорил я, — «на сервер никак не
повлияет, а посему, можно забить». К сожалению, оказалось, что это не совсем
так.

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

Читать дальше →

Ревизируем HTML и CSS «Хабрахабра»

Время на прочтение3 мин
Количество просмотров1.9K
Здравствуйте.

Коль скоро «Хабрахабр» тоже состоит из кода, займусь лёгкой ревизией той его части, с которой могу совладать, и которую скачиваю десятки раз в день. Проведём ревизию кода раздела «Прямой эфир».

Под катом HTML и CSS листинги.

Читать дальше →

Ленивые свойства объекта

Время на прочтение2 мин
Количество просмотров1.8K
Возможно, не самый умный экземпляр для линча, но хотелось с чего-нибудь начать)

Для красоты кода и удобства написания модулей, реализовал классы по работе с отдельными информационными сущностями. К примеру, такая вещь как язык интерфейса имеет свой ID, и для большинства операций этой информации вполне достаточно. В то же время, возникают редкие ситуации, когда требуется получить дополнительные сведения о нём (RFC-код, к примеру, узнать который можно, обратившись к отдельной таблице или файлу). Не особо задумываясь, поставил инициализацию переменных в конструктор класса… Проблемы начались, когда переехал на машину с тормозящим SQL-сервером (очень полезное занятие, как оказалось) – тестовая машина падала в таймаут при совершенно безобидных операциях. Не комильфо – процессорное время и SQL-соединения хотелось бы использовать более рационально :) Но использовать специальные методы для подгрузки вроде Fill() тоже не особо хотелось. В итоге пришел к наиболее простому (на мой взгляд) решению из доступных
Читать дальше →
12 ...
99

Вклад авторов