Top Lista programskih jezika?

Може и то помоћу варијантног слога. Једно поље декларишеш као поинтер и као ворд или лонг ворд, па упишеш у то поње адресу, а прочиташ као поинтер. То је међутим трик програмирање које не волим, али срећом да је Борланд проширио паскал са неким стварима из модуле 2.
Prosirio ga je i sa bit operatorima, a zbog cega je sve ovo pocelo :P
 
Prosirio ga je i sa bit operatorima, a zbog cega je sve ovo pocelo :P
Није ту ништа проширено. Логички оператори над целим бројевима раде бит по бит, а над вредностима boolean типа према буловој алгебри. Ради се о истим операторома and, or, xor not и ту нема проширења.
 
Није ту ништа проширено. Логички оператори над целим бројевима раде бит по бит, а над вредностима boolean типа према буловој алгебри. Ради се о истим операторома and, or, xor not и ту нема проширења.
Zasto onda to nije standardizovano, nego svaki Pascal koristi druge bit operatore :P
 
Не гледај шта ко пише већ гледај Reference guide. Ево доле сам копирао табелу логичких оператора из:

Reference guide for Free Pascal, version 3.0.4
Document version 3.0.4
September 2017

јер се у тексту на који си дао линк помиње Free Pascal, па сам издвојио тај део да видиш да се свашта пише, а истина је у Reference guide.

Table 12.4: Logical operators
Operator Operation
not Bitwise negation (unary)
and Bitwise and
or Bitwise or
xor Bitwise xor
shl Bitwise shift to the left
shr Bitwise shift to the right
<< Bitwise shift to the left (same as shl)
>> Bitwise shift to the right (same as shr)

и такође boolean оператори:

Table 12.5: Boolean operators
Operator Operation
not logical negation (unary)
and logical and
or logical or
xor logical xor

као што видиш употребљавају се исти оператори.
 
E sad ti meni reci kako ces da alignujes adresu pointera sa tim istim operatorima?
Е, сада се осећам као "ђак који гужва капу пред професором", јер је збуњен, шалим се.

Поинтер има вредност која је адреса, да ли мислиш на ту адресу, или адресу на којој је поинтер.

Не разумем жаргон Ц-аша "алигновати", знам шта је на Енглеском, али не знам на шта се овде мисли. Паскалци то не користе у свом жаргону.

И трећи пут те молим, напиши пример тог алигновања на Ц-у да бих разумео о чему се ради.
 
Eto, bacio sam oko na zalepljenu temu 'Javaskript tutorijali', pa da ne zagađujem tamo temu, pitam ovde: Koji klinac su sklepali ovo "let a = 5;"? Podseća me na ono: 'Neka bude svetlo'! :zcepanje: U svakom normalnom programskom jeziku je dovoljno a = 5!? :super:
To "let" je uvedeno 2015-e.
Uvedeno je da bi se smanjili moguce greske u kodu jer postoji razilka u scope-u izmedju "var","let" i "const".
 
Е, сада се осећам као "ђак који гужва капу пред професором", јер је збуњен, шалим се.

Поинтер има вредност која је адреса, да ли мислиш на ту адресу, или адресу на којој је поинтер.

Не разумем жаргон Ц-аша "алигновати", знам шта је на Енглеском, али не знам на шта се овде мисли. Паскалци то не користе у свом жаргону.

И трећи пут те молим, напиши пример тог алигновања на Ц-у да бих разумео о чему се ради.
Pa evo:
Kod:
#include <stdlib.h>
int main(void) {
    char* ptr = malloc(256);
    char* aligned = (char*)(((unsigned long)ptr + 7) & ~7);
}
Kako ces to da izvedes na Pascalu?
PS:
Ovo je recimo kad alignujes na 8 bajtova. U praksi najcesce treba na 16 znaci + 15 & ~15, zbog SSE-a, a malloc
alignuje na 8 ako je 64 bit ili 4 ako je 32 bit.
 
Pa evo:
Kod:
#include <stdlib.h>
int main(void) {
    char* ptr = malloc(256);
    char* aligned = (char*)(((unsigned long)ptr + 7) & ~7);
}
Kako ces to da izvedes na Pascalu?
PS:
Ovo je recimo kad alignujes na 8 bajtova. U praksi najcesce treba na 16 znaci + 15 & ~15, zbog SSE-a, a malloc
alignuje na 8 ako je 64 bit ili 4 ako je 32 bit.

I dalje nije jasno šta je to tvoje 'alignovanje'!
Eeee... A i to 'include' mi isto zvuči kao neka softverska perverzija!?:zcepanje:Kao da kod asemblera za MOV A,M trebam da dodam #include<memory.h> ?? Zar kompajler ne može sam da zaključi šta se treba 'inkludirati'?
 
Pa evo:
Kod:
#include <stdlib.h>
int main(void) {
    char* ptr = malloc(256);
    char* aligned = (char*)(((unsigned long)ptr + 7) & ~7);
}
Kako ces to da izvedes na Pascalu?
PS:
Ovo je recimo kad alignujes na 8 bajtova. U praksi najcesce treba na 16 znaci + 15 & ~15, zbog SSE-a, a malloc
alignuje na 8 ako je 64 bit ili 4 ako je 32 bit.

Сада сам разумео, ради се о поравњању података собзиром на дужину речи. Добијеш на брзини, избегаваш колизију у приступу меморији од стране неке друге јединице рачунара, али мало губиш на ефикасности коришћења меморије података.

Тако нешто је могуће само неком досетком или триком у паскаличним програмима, али је јако важно питање како компајлер распоређује варијабле. Он их може распоредити тако да буду поравнате.

"Although the compiler (or interpreter) normally allocates individual data items on aligned boundaries, data structures often have members with different alignment requirements. To maintain proper alignment the translator normally inserts additional unnamed data members so that each member is properly aligned. In addition, the data structure as a whole may be padded with a final unnamed member. This allows each member of an array of structures to be properly aligned."

Међутим ја немам информације о томе какав је компајлер који ја користим, по овом питању. Поравњање варијабли тако постаје више питање компајлера а мање програмског језика.

Процесор АRM V6 има хардврска решења за овај проблем, која су у већини случајева ефикасна сем у мањем броју специфичних случајева.

Предосећам да ће алигновање ускоро постати егзотика у било ком језику.
 
Сада сам разумео, ради се о поравњању података собзиром на дужину речи. Добијеш на брзини, избегаваш колизију у приступу меморији од стране неке друге јединице рачунара, али мало губиш на ефикасности коришћења меморије података.

Тако нешто је могуће само неком досетком или триком у паскаличним програмима, али је јако важно питање како компајлер распоређује варијабле. Он их може распоредити тако да буду поравнате.

"Although the compiler (or interpreter) normally allocates individual data items on aligned boundaries, data structures often have members with different alignment requirements. To maintain proper alignment the translator normally inserts additional unnamed data members so that each member is properly aligned. In addition, the data structure as a whole may be padded with a final unnamed member. This allows each member of an array of structures to be properly aligned."

Међутим ја немам информације о томе какав је компајлер који ја користим, по овом питању. Поравњање варијабли тако постаје више питање компајлера а мање програмског језика.

Процесор АRM V6 има хардврска решења за овај проблем, која су у већини случајева ефикасна сем у мањем броју специфичних случајева.

Предосећам да ће алигновање ускоро постати егзотика у било ком језику.
??? MALO??? Pa tako smo stigli do toga da samo OS jedva radi i sa 2 GB memorije! :zcepanje: :zcepanje:
 
Сада сам разумео, ради се о поравњању података собзиром на дужину речи. Добијеш на брзини, избегаваш колизију у приступу меморији од стране неке друге јединице рачунара, али мало губиш на ефикасности коришћења меморије података.

Тако нешто је могуће само неком досетком или триком у паскаличним програмима, али је јако важно питање како компајлер распоређује варијабле. Он их може распоредити тако да буду поравнате.

"Although the compiler (or interpreter) normally allocates individual data items on aligned boundaries, data structures often have members with different alignment requirements. To maintain proper alignment the translator normally inserts additional unnamed data members so that each member is properly aligned. In addition, the data structure as a whole may be padded with a final unnamed member. This allows each member of an array of structures to be properly aligned."

Међутим ја немам информације о томе какав је компајлер који ја користим, по овом питању. Поравњање варијабли тако постаје више питање компајлера а мање програмског језика.

Процесор АRM V6 има хардврска решења за овај проблем, која су у већини случајева ефикасна сем у мањем броју специфичних случајева.

Предосећам да ће алигновање ускоро постати егзотика у било ком језику.
Znas kako ako hoces da radis sa SSE vektorima moras da alignujes na 128 bita ili pijes exception :P
gcc ima ekstenzije, a C++ je dobio i alignas i std::align f-ju koja portabilno to radi isto :P
 
Znas kako ako hoces da radis sa SSE vektorima moras da alignujes na 128 bita ili pijes exception :P
gcc ima ekstenzije, a C++ je dobio i alignas i std::align f-ju koja portabilno to radi isto :P
За Server Side Encription нисам имао потребе, па нисам ни гледао шта у вези са тим има Делфи ХЕ5, за моје локалне базе није било потребе, мада сам радио енкрипцију, али за смарт картице.

Ако и има, то сигурно синтаксно не личи на оно што је у Ц++.
 
Eeee.... mudraci: Da izmislimo ESPERANTO programski jezik? :zcepanje:Znači, JEDAN jezik koji ima sintakse, pravopis i gramatiku za SVE moguće aplikacije!? Hebote, nesposobnih li informatičara: Nekada smo sa stotinjak asemblerskih instrukcija rešavali SVE probleme, a ovi pajseri napravili nauku od toga!? :zcepanje::zcepanje:
Istina da će to teško da prođe jer se mnogi teško odriču svoje 'kulture i tradicije', kao i među ljudskim jezicima!:super:
 
Сада сам разумео, ради се о поравњању података собзиром на дужину речи. Добијеш на брзини, избегаваш колизију у приступу меморији од стране неке друге јединице рачунара, али мало губиш на ефикасности коришћења меморије података.

Тако нешто је могуће само неком досетком или триком у паскаличним програмима, али је јако важно питање како компајлер распоређује варијабле. Он их може распоредити тако да буду поравнате.

"Although the compiler (or interpreter) normally allocates individual data items on aligned boundaries, data structures often have members with different alignment requirements. To maintain proper alignment the translator normally inserts additional unnamed data members so that each member is properly aligned. In addition, the data structure as a whole may be padded with a final unnamed member. This allows each member of an array of structures to be properly aligned."

Међутим ја немам информације о томе какав је компајлер који ја користим, по овом питању. Поравњање варијабли тако постаје више питање компајлера а мање програмског језика.

Процесор АRM V6 има хардврска решења за овај проблем, која су у већини случајева ефикасна сем у мањем броју специфичних случајева.

Предосећам да ће алигновање ускоро постати егзотика у било ком језику.
Da li je to i ovo: Iako radiš sa 8-bit podatkom (bajt), svejedno trošiš barem 64 bita? Ili to prvo trpaš po 8 u 64-bit, onda raspetljavaš u 8 puta 8, napraviš šta trebaš pa opet trpaš u 64-bit? :zcepanje: :zcepanje: :zcepanje:
Šta je pesnik hteo da kaže: razumljivo je povećanje broja adresnih bitova i povećanje 'količine' memorije! ALI, povećanje broja DATA bitova već davno prelazi smisao! I 24 bita (recimo 32 radi faktora multiplikativnosti) je već PERVERZIJA čak i za obradu fotografija! :zcepanje: :zcepanje: :zcepanje: :zcepanje:
Pa kaže i ovo: Povećanje memorije!? Koji je KU*AC smisao toga da ti se SUVIŠNI podaci koje ne stigneš da obradiš nalaze na disku ili u memoriji? :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje:
 
Poslednja izmena:
Da li je to i ovo: Iako radiš sa 8-bit podatkom (bajt), svejedno trošiš barem 64 bita? Ili to prvo trpaš po 8 u 64-bit, onda raspetljavaš u 8 puta 8, napraviš šta trebaš pa opet trpaš u 64-bit? :zcepanje: :zcepanje: :zcepanje:
Šta je pesnik hteo da kaže: razumljivo je povećanje broja adresnih bitova i povećanje 'količine' memorije! ALI, povećanje broja DATA bitova već davno prelazi smisao! I 24 bita (recimo 32 radi faktora multiplikativnosti) je već PERVERZIJA čak i za obradu fotografija! :zcepanje: :zcepanje: :zcepanje: :zcepanje:
Pa kaže i ovo: Povećanje memorije!? Koji je KU*AC smisao toga da ti se SUVIŠNI podaci koje ne stigneš da obradiš nalaze na disku ili u memoriji? :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje:
Da li možeš bar jedan post da napišeš bez hiljadu (cepanje) emotikona? o.O
 
Da li je to i ovo: Iako radiš sa 8-bit podatkom (bajt), svejedno trošiš barem 64 bita? Ili to prvo trpaš po 8 u 64-bit, onda raspetljavaš u 8 puta 8, napraviš šta trebaš pa opet trpaš u 64-bit? :zcepanje: :zcepanje: :zcepanje:
Šta je pesnik hteo da kaže: razumljivo je povećanje broja adresnih bitova i povećanje 'količine' memorije! ALI, povećanje broja DATA bitova već davno prelazi smisao! I 24 bita (recimo 32 radi faktora multiplikativnosti) je već PERVERZIJA čak i za obradu fotografija! :zcepanje: :zcepanje: :zcepanje: :zcepanje:
Pa kaže i ovo: Povećanje memorije!? Koji je KU*AC smisao toga da ti se SUVIŠNI podaci koje ne stigneš da obradiš nalaze na disku ili u memoriji? :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje: :zcepanje:
Па све што је добро има и своју лошу страну. Имаш 64-о битни процесор и реч му је 8 бајта. Сада, ако имаш два стринга дужине 10 бајта, први смешта на адресу која је умножак од 8, и следећа 2 бајта смешта у другу реч у меморији. Е сад, шта да ради са осталих 6 бајта у тој речи. Може да смести 6 бајта другог стринга, а остала 4 бајта у следећу меморијску реч, где остају још 4 слободба бајта. Сада, ако имаш још и стринг од 8 бајта смешташ 4 у текућу реч, а остала 4 у следећу, уместо да овакав стрин сместуш у једну реч. Последица је да овако смештен стринг дужине 8 бајта уместо да читаш у једном меморијском циклусу, читаће се у два меморијска циклуса. И може доћи до тешке грешке, ако између два меморијска циклуса улети интерапт а интерапт процедура користи тај стринг, иако није довршен његов упис у меморију. Такве грешке се тешко откривају.

Зато су измислили поравњање, брз и безбедан приступ подацима у меморији, а празна места у речи нема везе, хардвераши ионако стално повећавају капацитет меморије.

Паметни компајлери када распоређују варијабле по меморији могу да воде рачуна о овоме, а ако нису паметни алигнујеш сам.
 

Back
Top