Смешанное использование символов
my @array = ( 1, 2, 3 );
my $array = [ 4, 5, 6 ];
my $one = $array[0]; # not @array[0], you would get the length instead
my $four = $array->[0]; # definitely not $array[0]
my( $two, $three ) = @array[1,2];
my( $five, $six ) = @$array[1,2]; # coerce to array first
my $length_a = @array;
my $length_s = @$array;
my $ref_a = \@array;
my $ref_s = $array;
Например, ни один из них не то же:
$array[0] # First element of @array
@array[0] # Slice of only the First element of @array
%array[0] # Syntax error
$array->[0] # First element of an array referenced by $array
@array->[0] # Deprecated first element of @array
%array->[0] # Invalid reference
$array{0} # Element of %array referenced by string '0'
@array{0} # Slice of only one element of %array referenced by string '0'
%array{0} # Syntax error
$array->{0} # Element of a hash referenced by $array
@array->{0} # Invalid reference
%array->{0} # Deprecated Element of %array referenced by string '0'
В Perl6
это записано:
my @array = ( 1, 2, 3 );
my $array = [ 4, 5, 6 ];
my $one = @array[0];
my $four = $array[0]; # $array.[0]
my( $two, $three ) = @array[1,2];
my( $five, $six ) = $array[1,2];
my $length_a = @array.length;
my $length_s = $array.length;
my $ref_a = @array;
my $ref_s = $array;
Отсутствие истинного OO
package my_object;
# fake constructor
sub new{ bless {}, $_[0] }
# fake properties/attributes
sub var_a{
my $self = shift @_;
$self->{'var_a'} = $_[0] if @_;
$self->{'var_a'}
}
В Perl6
это записано:
class Dog is Mammal {
has $.name = "fido";
has $.tail is rw;
has @.legs;
has $!brain;
method doit ($a, $b, $c) { ... }
...
}
Плохо разработанные regex функции
/(?=regexp)/; # look ahead
/(?<=fixed-regexp)/; # look behind
/(?!regexp)/; # negative look ahead
/(?regexp)/; # independent sub expression
/(capture)/; # simple capture
/(?:don't capture)/; # non-capturing group
/(?regexp)/; # named capture
/[A-Z]/; # character class
/[^A-Z]/; # inverted character class
# '-' would have to be the first or last element in
# the character class to include it in the match
# without escaping it
/(?(condition)yes-regexp)/;
/(?(condition)yes-regexp|no-regexp)/;
/\b\s*\b/; # almost matches Perl6's
/(?{ print "hi\n" })/; # run perl code
В Perl6
это записано:
/ /; # lookahead
/ /; # lookbehind
/ regexp :: pattern /; # backtracking control
/ ( capture ) /; # simple capture
/ $=[ regexp ] /; # named capture
/ [ don't capture ] /; # non-capturing group
/ <[A..Z]> /; # character class
/ <-[A..Z]> /; # inverted character class
# you don't generally use '.' in a character class anyway
/ /; # Smart whitespace match
/ { say 'hi' } /; # run perl code
Отсутствие нескольких диспетчеризирует
sub f( int $i ){ ... } # err
sub f( float $i ){ ... } # err
sub f($){ ... } # occasionally useful
В Perl6
это записано:
multi sub f( int $i ){ ... }
multi sub f( num $i ){ ... }
multi sub f( $i where $i == 0 ){ ... }
multi sub f( $i ){ ... } # everything else
Плохая перегрузка Оператора
package my_object;
use overload
'+' => \&add,
...
;
В Perl6
это записано:
multi sub infix:<+> (Us $us, Them $them) |
(Them $them, Us $us) { ... }
Отличное место для изучения программирования на ассемблере Windows для x86 - это легендарные учебники Iczelion .
Вы также можете найти инструменты MASM здесь
, и если у вас есть терпение, #asm на EFNET
Я рекомендую вам изучить сборку RISC вместо CISC; у вас будет меньше инструкций для изучения, и вы сможете попрактиковаться в построении большего числа конструкций более высокого уровня. Я сначала изучил сборку MIPS, потому что в ней есть отличный бесплатный эмулятор ( SPIM ) и учебник, название которого я, к сожалению, забыл, но у него был переплет старой школы, и он был кремового цвета.
Вы не говорите, какой процессор вас интересует, что очень важно. Однако, исходя из семейства Intel x86, существует довольно много эмуляторов, которые позволят вам безопасно запускать ваш код на вашем компьютере. рабочий стол, например это . Google по запросу "эмулятор 8086", чтобы узнать больше.
Начните с некоторых руководств.
Посмотрите либо на FASM, либо на MASM.
Возможно, вы захотите прочитать эту фантастическую: книга