Posts Tagged ‘компилятор’

Как защитить мою программу, чтобы никто не смог её прочитать?

Вторник, Апрель 17th, 2012 Нет комментариев

Under : , , , ,

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

Самый простой способ защиты программы это использование компилятора perlcc (Unix/Linux) или perl2exe (Windows), который создаёт из программы обычный выполняемый файл. Этот метод однако имеет много недостатков. Помимо ненадёжности компиляторов и потери кроссплатформенности, компиляции как таковой как минимум во втором случае не производится. Созданный выполняемый файл содержит полный интерпретатор Perl и саму программу в зашифрованном виде (так объясняется громадный размер файла). Уже существуют утилиты, позволяющие расшифровывать программу из такого файла. (далее…)

Прекрасный язык Perl

Вы наверное обратили свое внимание что CGI скрипты пишутся обычно на языке Perl (Practical Extraction and Report Language)- очень удобном языке,впитавшем из других все лучшие черты.Может у вас возникнуть сомнение :Ну вот!Изучать новый язык программирования!? Спешу вас успокоить,изучение Perl не будет в тягость (я сужу по своему опыту!). Вы даже сами не заметите как выучите его.Если вы хоть когда-нибудь программировали скажем на C и использовали утилиту grep для поиска регулярных выражений в тексте,то вам будет еще легче.Мое изучение Perl началось с того что я скачал Perl подWindows (фирмы ActiveWare) и изучения той HTMLой документации которая к нему прилагалась хватило чтоб этот язык стал моим любимым….
Все в нем сделано для удобства программиста (в отличии например от Java;( )
Начнем с переменных,они в Perl бывают 3х типов скаларные,списковые(массивы) и хэши(ассоциативные массивы). Для указания компилятору(да и для немалого удобства программиста) перед именем скалярной переменной стоит знак ‘$’ перед массивом ‘@’,перед хешем ‘%’. т.е. например $scalar_var,@array_var,%hash_var Скалярные переменные могут быть как числовые так и строковые,но это не надо указывать Perl сам по контексту в зависимости от операций может привести одно к другому.
Например: «123″+»4″ будет 127 (или «127″) так как операция ‘+’ действует над числами а вот если применить операцию конкатенации строк ‘.’ то строковое «test» . 1 будет «test1″


Ну а вот операции над скалярными переменными:

Операцыи Описание Пример
+ — * / % Арифметические print 2*7+4/(8%3);
print int(127/15); #целая часть
** Возведение в степень print 2**16;
++ — Инкремент-декремент $i++;
& | ^ ~ << >> Побитовые $x=3;$y=4;
print $x|$y;
print $x&$y;
== != < > <= >= <=> Числовые операции сравнения if($x==9){print «Ok!»;}
eq ne lt gt le ge cmp стрковые операции сравнения if($game eq ‘doom’){print «You are doomer!\n»;}
|| && ! Логические if(($x==9)||($game eq ‘doom’)){print «hello you!\n»;}
?: Условный оператор $x=($game eq ‘quake’?9:8);
, Последовательное вычисление $x=10,$y=20;
. Конкатенация $x=’http://’.'www.uic.nnov.ru’;
x Повторение $x=’1234′x5; #$x=’12341234123412341234′
=~ Сопоставление с образцом if($url=~/http/){print «HTTP»;}
!~ То же но с отрицанием if($url!~/http/){print «No HTTP»;}
= += -= *= /= %= **= |= &= ^= ~= <<= >>= .= x= Присваивание $x+=$y;

(далее…)

Классы в C++

Одной из основных черт C++, которой нет в С, является концепция классов.По существу, классы — самое важное понятие в C++. Классы похожи на структуры языка С. Однако структура С определяет только данные, ассоциированные с этой структурой. Вот пример структуры С:

struct CIRCLE
{
int radius;
int color;
{;
После того как вы объявили структуру, вы можете использовать ее в пределах вашей функции main (), как показано ниже:
(далее…)

Тип связывания или тип компоновки

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

Если объект локализован в одном модуле, то используется внутреннее связывание. Тип компоновки специальным образом не обозначается, а определяется компилятором по контексту, местоположению объявлений и использованию спецификаторов класса памяти.
(далее…)