Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Assembler
Перезагрузить страницу Начинаю борьбу за "кодеризацию" населения
Ответ
 
Опции темы Опции просмотра
  (#46 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 23.12.2003, 02:47

Цитата:
Originally posted by Anonymous
[b]Ага.. А если поподробнее?
Примерчик и все такое?
Желательно Oracle, Cache ну и убогий Access..
Медаль уже в коробочке - ждет победителя..
Пример?! Пожалуйста. Это простая демонстрационная программка под Win32, которая позволяет создавать базу данных или соединиться с существующей базой данных, а также выполнить любой SQL-оператор (CREATE ..., ALTER ..., DROP ..., INSERT INTO ..., DELETE FROM ...). Единственное ограничение на исполнение операторов состоит в том, что не отображаются результаты выборки (оператор SELECT). Сделано это сознательно, поскольку в этом случае необходимо добавить работу с памятью, преобразование данных из различных форматов (целые, вещественные, даты и время, строки, BLObs и пр.). Наглядности это не добавит, но затруднит понимание исходного текста программы. В действительности, особых сложностей с реализацией оператора выборки нет (поверьте на слово или проверьте сами). Размер EXE-файла 8 Кб. Компилируется TASM, для линковки используется TLink. Диалоги сделаны в Visual Studio (rc & res файлы).
Код:
; =================================
;    Interbase API 02
;    written by Alexander Usoff
;    Jan. 1998 y.
;    for FIDO.ASM&WIN32
; =================================

; ---------------------------------
;    DB create & connect & job
; ---------------------------------
Ideal
P586
Radix    16
Model    flat

%NOINCL
include    "winconst.inc"
include    "winprocs.inc"
include    "winmacro.inc"
include    "intrbase.inc"
include    "resource.inc"

quota  =    27
MAX_SERVER    =    20
MAX_DATABASE    =    100
MAX_USER    =    20
MAX_PASSWORD    =    10
MAX_CHARSET    =    0Bh
SV_LENGTH    =    14; status vector length = 20 d

UDataSeg
hInst  dd    ?
dialect  dd    ?
server  db    MAX_SERVER + 1  dup    (?)
ALIGN 4
database    db    MAX_DATABASE + 1    dup    (?)
ALIGN 4
user  db    MAX_USER + 1  dup    (?)
ALIGN 4
password    db    MAX_PASSWORD + 1    dup    (?)
ALIGN 4
charset  db    MAX_CHARSET + 1  dup    (?)
ALIGN 4

DataSeg
hDatabase    dd    0
hTransaction    dd    0
status_vector    dd    SV_LENGTH dup (0)

CodeSeg
; Основная программа (8 строк) :)
Start:  call    GetModuleHandleA,    0
  mov    [hInst],eax

  call    DialogBoxParamA,    eax, IDD_IBLOGON,    
      0, offset IBLogonProc, 0
  or    eax,eax
  jz    short quit

  call    DialogBoxParamA,    [hInst], IDD_SESSION,    
      0, offset SessionProc, 0

  call    isc_detach_database,    offset status_vector,    
      offset hDatabase
quit:  call    ExitProcess,  0

public    stdcall  IBLogonProc
proc    IBLogonProc    stdcall
arg    @@hDlg    :dword,    @@msg    :dword,    @@wPar    :dword,    @@lPar    :dword
local    @@buf    :byte:170
uses    esi, edi

UDataSeg
@@server    dd    ?
@@database    dd    ?
@@protocol    dd    ?
@@user  dd    ?
@@password    dd    ?
@@dialect    dd    ?
@@charset    dd    ?

DataSeg
ALIGN    4
@@charset_str    db    'ASCII', 0
  db    'BIG_5', 0
  db    'CYRL', 0
  db    'DOS437', 0
  db    'DOS850', 0
  db    'DOS852', 0
  db    'DOS857', 0
  db    'DOS860', 0
  db    'DOS861', 0
  db    'DOS863', 0
  db    'DOS865', 0
  db    'EUCJ_0208', 0
  db    'GB_2312', 0
  db    'ISO8859_1', 0
  db    'KSC_5601', 0
  db    'NEXT', 0
  db    'NONE', 0
  db    'OCTETS', 0
  db    'SJIS_0208', 0
  db    'UNICODE_FSS', 0
  db    'WIN1250', 0
  db    'WIN1251', 0
  db    'WIN1252', 0
  db    'WIN1253', 0
  db    'WIN1254', 0, 0

@@dialect_str    db    '1', 0, '2', 0, '3', 0, 0
@@protocol_str    db    'TCP/IP', 0, 'NetBEUI', 0, 0

@@sql_createdb    db    @@len_createdb
  db    'CREATE DATABASE ', quota
@@len_createdb    =    $ - @@sql_createdb - 1

@@sql_dbuser    db    @@len_dbuser
  db    quota, ' USER ', quota
@@len_dbuser    =    $ - @@sql_dbuser - 1

@@sql_dbpswd    db    @@len_dbpswd
  db    quota, ' PASSWORD ', quota
@@len_dbpswd    =    $ - @@sql_dbpswd - 1

@@sql_dbpage    db    @@len_dbpage
  db    quota, ' PAGE_SIZE = 4096 DEFAULT CHARACTER SET '
@@len_dbpage    =    $ - @@sql_dbpage - 1

DlgVector    WM_INITDIALOG, WM_COMMAND

MSG_HANDLER    WM_INITDIALOG
  mov    edi,IDC_SERVER - 1
  mov    esi,offset @@server - 4

@@init_item:    inc    edi
  add    esi,4
  call    GetDlgItem,    [@@hDlg], edi
  mov    [dword esi],eax
  cmp    edi,IDC_CHARSET
  jb    short @@init_item

  call    SendMessageA,  [@@server], EM_LIMITTEXT, MAX_SERVER - 1, 0
  call    SendMessageA,  [@@database], EM_LIMITTEXT, MAX_DATABASE - 1, 0
  call    SendMessageA,  [@@user], EM_LIMITTEXT, MAX_USER - 1, 0
  call    SendMessageA,  [@@password], EM_LIMITTEXT, MAX_PASSWORD - 1, 0

  mov    edi,[@@charset]
  mov    esi,offset @@charset_str
  call    FillCombobox    stdcall,    10

  mov    edi,[@@dialect]
  call    FillCombobox    stdcall,    2

  mov    edi,[@@protocol]
  call    FillCombobox    stdcall,    1

END_HANDLER    ret_true

MSG_HANDLER    WM_COMMAND
CmdVector    IDC_DBCREATE, IDC_DBCONNECT, IDC_LOGCANCEL
END_HANDLER

MSG_HANDLER    IDC_DBCREATE
; read fields
; create database
; detach database
  mov    edi,offset @@create_database

@@read_logparams:
  call    SendMessageA,  [@@server], WM_GETTEXT, MAX_SERVER, offset server + 1
  mov    [server],al
  call    SendMessageA,  [@@database], WM_GETTEXT, MAX_DATABASE, offset database + 1
  mov    [database],al
  call    SendMessageA,  [@@user], WM_GETTEXT, MAX_USER, offset user + 1
  mov    [user],al
  call    SendMessageA,  [@@password], WM_GETTEXT, MAX_PASSWORD, offset password + 1
  mov    [password],al
  call    SendMessageA,  [@@charset], WM_GETTEXT, MAX_CHARSET, offset charset + 1
  mov    [charset],al
  call    SendMessageA,  [@@dialect], CB_GETCURSEL, 0, 0
  inc    eax
  mov    [dialect],eax
  jmp    edi

@@create_database:
  lea    edi,[@@buf]
  mov    edx,edi
  xor    ecx,ecx
  cld

  CopyPStr    offset @@sql_createdb

  mov    cl,[server]
  or    ecx,ecx
  jz    short @@copy_db

  call    SendMessageA,  [@@protocol], CB_GETCURSEL, 0, 0
  xor    ecx,ecx
  or    eax,eax
  mov    al,':'
  jnz    short @@tcpip

  mov    [word edi],''
  add    edi,2
  mov    al,''

@@tcpip:    CopyPStr    offset server
  stosb

@@copy_db:    ConcatPStr    database, @@sql_dbuser, user, @@sql_dbpswd, password, @@sql_dbpage, charset

  mov    al,';'
  stosb
  sub    edi,edx

  call    isc_dsql_exec_immed2,    offset status_vector,    
      offset hDatabase,    
      offset hTransaction,    
      edi, edx, [dialect],    
      0, 0
  or    eax,eax
  jnz    @@err_createdb
  call    isc_detach_database,    offset status_vector,    
      offset hDatabase
END_HANDLER    connect

MSG_HANDLER    IDC_DBCONNECT
; read fields
; fill dpb
; connect database
  mov    edi,offset @@connect
  jmp    @@read_logparams

@@connect:    lea    edi,[@@buf]
  mov    edx,edi
  mov    [dword edi],(((((0F0 shl 8) + 1) shl 8) + isc_dpb_num_buffers) shl 8) + isc_dpb_version1
  add    edi,4
  mov    [word edi],isc_dpb_force_write
  add    edi,2
  xor    ecx,ecx
  cld
  mov    [byte edi],isc_dpb_lc_ctype
  mov    esi,offset charset
  inc    edi
  mov    cl,[byte esi]
  inc    ecx
  rep    movsb

  mov    [byte edi],isc_dpb_user_name
  mov    esi,offset user
  inc    edi
  mov    cl,[byte esi]
  inc    ecx
  rep    movsb

  mov    [byte edi],isc_dpb_password
  mov    esi,offset password
  inc    edi
  mov    cl,[byte esi]
  inc    ecx
  rep    movsb

  sub    edi,edx
  call    isc_attach_database,    offset status_vector,  
      ecx, offset database + 1,    
      offset hDatabase, edi, edx
  or    eax,eax
  jnz    short @@err_attach

  mov    eax,1
END_HANDLER    short    end

MSG_HANDLER    IDC_LOGCANCEL
  xor    eax,eax
@@end:  call    EndDialog,    [@@hDlg], eax
END_HANDLER    ret_false

@@err_createdb:
@@err_attach:
  jmp    @@ret_false

endp    IBLogonProc

proc    FillCombobox    stdcall
arg    @@index    :dword
; edi = id combobox item
; esi = offset string list

@@1:  call    SendMessageA,    edi, CB_ADDSTRING, 0, esi
  xor    eax,eax
@@2:  mov    al,[byte esi]
  inc    esi
  or    eax,eax
  jnz    short @@2
  mov    al,[byte esi]
  or    eax,eax
  jnz    short @@1
  call    SendMessageA,    edi, CB_SETCURSEL, [@@index], 0
  inc    esi
  ret
endp    FillCombobox

public    stdcall  SessionProc
proc    SessionProc    stdcall
arg    @@hDlg    :dword,    @@msg    :dword,    @@wPar    :dword,    @@lPar    :dword
local    @@psv    :dword,    @@len    :dword,    @@buf    :byte:400

UDataSeg
@@query  dd    ?
@@history    dd    ?

DataSeg
ALIGN    4
tpb  db    isc_tpb_version3
  db    isc_tpb_write
  db    isc_tpb_read_committed
  db    isc_tpb_no_rec_version
  db    isc_tpb_wait
LENGTH_TPB    =    $ - tpb
@@ok  db    'Ok.'
@@zero  db    0
@@error  db    'Error!', 0

DlgVector    WM_INITDIALOG, WM_COMMAND

MSG_HANDLER    WM_INITDIALOG
  call    GetDlgItem,      [@@hDlg], IDC_QUERY
  mov    [@@query],eax
  call    GetDlgItem,      [@@hDlg], IDC_HISTORY
  mov    [@@history],eax

  call    isc_start_transaction,  offset status_vector,    
          offset hTransaction,    
          1, offset hDataBase,    
          LENGTH_TPB, offset tpb
END_HANDLER    short    ret_false

MSG_HANDLER    WM_COMMAND
CmdVector    IDC_RUN, IDC_COMMIT, IDC_ROLLBACK, IDC_OK
END_HANDLER    short    ret_false

MSG_HANDLER    IDC_RUN
  push    ebx
  lea    ebx,[@@buf]
  call    SendMessageA,      [@@query], WM_GETTEXT, 400, ebx
  or    eax,eax
  jz    @@ret_false

  dec    eax
  mov    [@@len],eax
  xor    eax,eax
  mov    edx,ebx

@@scan:  mov    al,[byte edx]
  inc    edx
  cmp    al,0Dh
  je    short @@eol
  or    eax,eax
  jz    short @@exec
  jmp    short @@scan

@@eol:  mov    [byte edx - 1],0
  push    edx
  call    SendMessageA,      [@@history], LB_ADDSTRING, 0, ebx
  pop    edx
  mov    [byte edx - 1],0Dh
  inc    edx
  mov    ebx,edx
  jmp    short @@scan

@@exec:  call    SendMessageA,      [@@history], LB_ADDSTRING, 0, ebx
  lea    ebx,[@@buf]
  call    isc_dsql_exec_immed2,  offset status_vector,    
          offset hDataBase,    
          offset hTransaction,    
          [@@len], ebx, [dialect], 0, 0
  or    eax,eax
  jnz    short @@err_query

  call    SendMessageA,      [@@query], WM_SETTEXT, 0, offset @@zero
  call    SendMessageA,      [@@history], LB_ADDSTRING, 0, offset @@ok
  call    SendMessageA,      [@@history], LB_ADDSTRING, 0, offset @@zero
  pop    ebx
END_HANDLER    ret_false

@@err_query:    call    SendMessageA,      [@@history], LB_ADDSTRING, 0, offset @@error
  mov    [@@psv],offset status_vector

@@err_loop:    lea    edx,[@@psv]
  call    isc_interprete,      ebx, edx
  or    eax,eax
  jz    short @@end_err_loop
  call    SendMessageA,      [@@history], LB_ADDSTRING, 0, ebx
  jmp    short @@err_loop
@@end_err_loop:    call    SendMessageA,      [@@history], LB_ADDSTRING, 0, offset @@zero
  pop    ebx
  jmp    @@ret_false

MSG_HANDLER    IDC_COMMIT
  call    isc_commit_retaining,  offset status_vector,    
          offset hTransaction
END_HANDLER    ret_false

MSG_HANDLER    IDC_ROLLBACK
  call    isc_rollback_retaining,  offset status_vector,    
          offset hTransaction
END_HANDLER    ret_false

MSG_HANDLER    IDC_OK
  call    isc_commit_transaction,  offset status_vector,    
          offset hTransaction
  call    EndDialog,      [@@hDlg], 0
END_HANDLER    ret_false

endp    SessionProc

End    Start
Работа с Oracle значительно сложнее, Access я не использую. А Cache... это для мазохистов (IMHO).
Ответить с цитированием
  (#47 (permalink)) Старый
Kurt Kurt вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.11.2003
По умолчанию 09.02.2004, 22:08

Еще по поводу будущего АСМа..
Товарищи, а как быть с таким явлением, название которому .NET?
Все последующие Windows будут основаны на .NET и вся дальнейшая разработка - тока на этой штуке. Win32-программы будут считаться устаревшими, как ныне DOS, и, соответственно, будут медленными и использовать много ресурсов..
Следовательно, программить на ASM - писать программу, устаревшего формата - медленную и никому не нужную..
Ну, тока драйвера, может быть..
Кто против?..
Ответить с цитированием
  (#48 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 10.02.2004, 03:58

Цитата:
Originally posted by Kurt
[b]Еще по поводу будущего АСМа.. Товарищи, а как быть с таким явлением, название которому .NET?
Хм... Как известно, "на .NET и суда нет"
Цитата:
Originally posted by Kurt
[b]Все последующие Windows будут основаны на .NET и вся дальнейшая разработка - тока на этой штуке
Во-первых, не Windows единым... Во-вторых, требованию по быстродействию (и компактности) пока еще никто не отменял (даже власти главы Microsoft на это маловато будет). В-третьих, ассемблер хоронят так регулярно, что между поминками не успеваешь протрезветь
Цитата:
Originally posted by Kurt
[b]Win32-программы будут считаться устаревшими, как ныне DOS, и, соответственно, будут медленными и использовать много ресурсов..
Парадокс, но многие программы, написанные под DOS, работают быстрее своих Windows-аналогов (потребляемые ресурсы лучше не сравнивать). Возможно, имелись в виду, "современные технологические возможности", которые открывает новая платформа(?), и которые не будут доступны тем программистам, пишущим на ассемблере. Например, автоматическая перекомпиляция приложения или библиотеки под новую платформу при загрузке. Безусловно, это хорошая возможность, которой автоматически лишаются ассемлерщики, но... насколько многообразны сегодня платформы (в смысле системы команд x86)? Да, появление Athlon64 и ожидаемого ответного IA64 приведет к раздвоению, если... какая-то платформа не победит быстро и окончательно. Но до этого еще надо дожить, а между тем IA32 лет пять послужит пользователям, а там и с 64-битной платформой будет ясно (чья взяла).
А вообще, по моему мнению, ассемблер - это явление, которое должно оцениваться с разных сторон. Безусловно, его (ассемблер) надо оценивать с позиций языка программирования и сравнивать с другими языками программирования. С другой стороны, ассемблер дает возможность прямо работать с "железом", минуя "прослойки" другого ПО. И, наконец, с третьей стороны, ассемблер дает возможность оптимизации алгоритмов под конкретную платформу.
Исходя из своего опыта, могу сказать, что мне не встречались программисты, которым бы помешал опыт программирования на ассемблере, но часто приходится сталкиваться с теми программистами, кому такого опыта не достает.
Цитата:
Originally posted by Kurt
[b]Следовательно, программить на ASM - писать программу, устаревшего формата - медленную и никому не нужную..
Не надо быть провидцем, чтобы предугадать, что одной из первых фирм, которая выпустит ассемблер под .NET будет... Microsoft. Если Вы помните историю (которая любит повторяться, дабы ее не забывали), то с выходом WinNT представители Microsoft тоже говорили о смерти ассемблера, но кто же тогда выпускает MASM? И я бы не сказал, что программы, написанные на ассемблере под WinNT/2000/XP, уступали по производительности аналогам, написанным на ЯВУ. Думаю, что с приходом .NET картина не изменится.

PS. "Для корабля, который не знает куда плыть, нет попутного ветра..." "Для корабля, который не знает, куда плыть", любой ветер попутный.
Ответить с цитированием
Ads
  (#49 (permalink)) Старый
Kurt Kurt вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.11.2003
По умолчанию 13.02.2004, 21:34

Проблемка не в том, что проги на АСМе станут устаревшими - проблемка в ПОДДЕРЖКЕ!
Ведь все силы будут брошены на .NET..
А по поводу корабля..
Если он не знает куда плыть, то меняет курс каждую минуту => ветер не может быть попутным..
Ответить с цитированием
  (#50 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 02.03.2004, 00:45

По моему тем, кто считает себя великим программером и программирует на C, Паскале и подобных языках, ассемблер узнать необходимо, это вроде как следующая ступень развития;
что же до веб программистов или баз данных, им это конечно не обязательно, но можно, что бы потом не жаловались- то Delphi больше 500 метров не переваривает да почему компактные индексы быстрее чем прочие.
Ответить с цитированием
Ads.
  (#51 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 27.03.2004, 20:16

Да народ... я за АСМ....
Вот говорят - одним надо, другим нет.... - ГОН, ГОН, ГОН!!!!
Я вот вообще веб-скриптер, программирую на ПЕРЛ пишу веб-скрипты СГИ+МуСКУЛ. Но... по-моему деление все-таки существует, только на ПРОГРАММИСТОВ и НАЕМНИКОВ... первым - интересно все, вторым - заработок. Я недавно начал учить асм, но он мне очень понравился поскольку это ЕСТЕССТВЕННОЕ программирование, а не всякие буилдеры извращающие правильное понимание о программировании.

ASM FOREWER!
Ответить с цитированием
  (#52 (permalink)) Старый
Kurt Kurt вне форума
Member
 
Сообщений: 28
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.11.2003
По умолчанию 30.03.2004, 22:13

Цитата:
Но... по-моему деление все-таки существует, только на ПРОГРАММИСТОВ и НАЕМНИКОВ... первым - интересно все, вторым - заработок.

А есть те, которые все это органично совмещают - и программисты и наемники..
Ответить с цитированием
  (#53 (permalink)) Старый
Yttrium Yttrium вне форума
Member
 
Сообщений: 74
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.09.2003
По умолчанию 03.04.2004, 19:58

Борба чисто на уровне платформы WIntel. Intel то ладно.
Посмотрел ссайт оказалось там и линуксоидам есть чё посмотреть, правда гон чаще.
А на счёт SSE, SSE2, 3Dnow то у gcc есть параметры на оптимизацию под эти технологии.

И вообще надо ассемблер изучать в школе на уроках информатики!
Ответить с цитированием
  (#54 (permalink)) Старый
Shaft Shaft вне форума
Member
 
Сообщений: 59
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.04.2004
По умолчанию 21.04.2004, 19:20

Код:
Я вот вообще веб-скриптер...
Я недавно начал учить асм, но он мне очень понравился поскольку это ЕСТЕССТВЕННОЕ программирование, а не всякие буилдеры извращающие правильное понимание о программировании.
Это, похоже, квинтессенция защитников АСМА, как по идее, так и по выражению. А что такое "правильное понимание о программировании"? Почему никто не предлагает заменить язык программирования SQL на асм? Никогда не задумывались?

Мне кажется, все это от недостатка знаний, а не от навороченности. По-моему, все, кто учился на программиста, асм знают. И пользуются, если надо. Другое дело, что те, кто учился на программиста и выучился, знают, что в 99% он не нужен.
Можно все поле вскопать лопатой. Так и делают, когда окучивают редкие виды цветов. Но в подавляющем большинстве случаев требуется посеять пшеницу. И никто не будет ждать, когда ты выйдешь в поле, и всего за месяц вскопаешь первые сорок соток. Зато качественно!
Ответить с цитированием
  (#55 (permalink)) Старый
kas kas вне форума
Member
 
Сообщений: 191
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.08.2003
По умолчанию 22.04.2004, 20:58

Сидели на песке, не подалеку от храма Мастер и
ученик. Оба любовались красотой мира.
И вдруг ученик спросил мастера: "В чем суть НР".
Мастер стукнул ученика палкой и ушел программировать.
Ученик вмиг просветлел и написал на песке:

0ca8:0100 mov ax, 1
0ca8:0102 mov cx, ffff
0ca8:0105 inc ax
0ca8:0106 jmp 0105
Ответить с цитированием
  (#56 (permalink)) Старый
UNV UNV вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2004
По умолчанию 23.04.2004, 03:13

Цитата:
Originally posted by Shaft
[b]Почему никто не предлагает заменить язык программирования SQL на асм? Никогда не задумывались?
Язык программирования SQL?
Почему-то я всю жизнь считал, что SQL - это язык запросов к базе данных. Ну ладно, пусть будет язык программирования. Функциональный. Напрограммируйте-ка мне, батенька, например, взятие факториала на SQL (процедурные расширения просьба не привлекать). Что - не можете? Ну ладно - напрограммируйте перевод строки в нижний регистр (что-то вроде select lower('BlaBlaBla') from dual). Теперь исполните и засеките время. А потом напишите аналогичную программу на ассемблере и посчитайте за сколько отработает она. Сравнили? Как мой пример взаимозаменяемости языков программирования?

Вот так-то. Не надо путать тёплое с мягким. Всем понятно, что нельзя заменить ассемблером интерпретируемый язык, который к тому же будет исполняться на другой машине, но огромную роль ассемблера признаёт большинство программистов. Конечно, перегибать палку тоже не стоит. Ассемблер хорош там, где он себя оправдывает.
Ответить с цитированием
  (#57 (permalink)) Старый
Shaft Shaft вне форума
Member
 
Сообщений: 59
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.04.2004
По умолчанию 23.04.2004, 13:33

SQL - это конечно, язык, запросов и к базе данных. Но прежде всего это язык программирования. Иначе на нем бы разговаривали, а не писали программы. Программы в широком смысле - не только те, которые начинаются с int main или PROGRAM.

Насчет факториала. Я вот как раз и говорю, что никто не будет писать взятие факториала на SQL в здравом уме и при наличии малейшей альтернативе. НО! Точно так же никто не будет писать joinы на ассемблере. Потому что нет универсально правильного способа написания программ. А тут пишут, что асм - это "правильный способ" программирования, а все остальное, мол - отстой для тех, кто не в состоянии понять асм.

Если отбросить фанатизм и дзенствующее программерство, то реально можно обозначить конечное, и не очень большое количество применений ассемблера.

А про
Цитата:
огромную роль ассемблера признаёт большинство программистов
пожалуйста, поподробнее. В обучении? Да, все кто учился в ВУЗах, его учил. Те, кто пишут криптопреобразования (а точнее, оптимизируют их) или какие-нить драйвера тоже уважают асм. Но большинство? Роль в чем? Ассемблер - это инструмент, давний и прозаический.
Ответить с цитированием
  (#58 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 23.04.2004, 13:56

Цитата:
Originally posted by Shaft+-->
Цитата:
SQL - это конечно, язык, запросов и к базе данных. Но прежде всего это язык программирования. Иначе на нем бы разговаривали, а не писали программы. Программы в широком смысле - не только те, которые начинаются с int main или PROGRAM.
Не согласен.
SQL - это все же не язык программирования.
Язык программирования - это средство описания алгоритмов.
SQL описывает не алгоритмы, а запросы к базе данных.

<!--QuoteBegin-Shaft

[b]А про
<div class='quotetop'>Цитата
Цитата:
огромную роль ассемблера признаёт большинство программистов
пожалуйста, поподробнее. В обучении? Да, все кто учился в ВУЗах, его учил. Те, кто пишут криптопреобразования (а точнее, оптимизируют их) или какие-нить драйвера тоже уважают асм. Но большинство? Роль в чем? Ассемблер - это инструмент, давний и прозаический.[/quote]

Изучение ассемблера - хороший способ понять принципы работы компьютера. А без этого понимания хорошего программера не получится.
Ответить с цитированием
  (#59 (permalink)) Старый
Shaft Shaft вне форума
Member
 
Сообщений: 59
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.04.2004
По умолчанию 23.04.2004, 15:53

2Garik
Уважая количество Ваших постов, все же хочу заметить, что в теории Вы не сильны. К сожалению, britannica.com - платный сервис, но Вы можете заглянуть на страницу http://encyclopedia.thefreedictionary.com/...ing%20languages, где приведен список по категориям языков программирования, и http://encyclopedia.thefreedictionary.com/...ming%20language, где написано про сам SQL.

Но даже если туда не заглядывать. Язык программирования - не средство выражение алгоритмов. В лучшем случае императивные языки программирования - это средство выражения алгоритмов. Во многих других языках - и в этом состоит смысл их существования - алгоритм не важен, т.к. встроен в сам язык, как в SQL. Программисту неважен алгоритм SELECT'a, ему нужен кусок таблицы.

Цитата:
Изучение ассемблера - хороший способ понять принципы работы компьютера. А без этого понимания хорошего программера не получится.
Я про это и говорил. Все, кто нормально учился на программиста, его знают.
Ответить с цитированием
  (#60 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 23.04.2004, 16:41

Цитата:
Originally posted by Shaft
[b]2Garik
Уважая количество Ваших постов, все же хочу заметить, что в теории Вы не сильны.
[skipped]
Но даже если туда не заглядывать. Язык программирования - не средство выражение алгоритмов. В лучшем случае императивные языки программирования - это средство выражения алгоритмов. Во многих других языках - и в этом состоит смысл их существования - алгоритм не важен, т.к. встроен в сам язык, как в SQL. Программисту неважен алгоритм SELECT'a, ему нужен кусок таблицы.
Хм... После фразы "алгоритм не важен, т.к. встроен в сам язык" мне кажется, что это Вы не сильны в теории.
Но на самом деле наш спор носит исключительно терминологический характер и сводится к вопросу: что такое программирование.
Приведите свое определение программирования и языка программирования.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появилось окно с ошибкой: "Insert the "Tray App" disk and click OK". Anita_2 Техническая поддержка 6 14.12.2014 14:20
Ставлю систему "с нуля" после сбоя. Какие "работы" по тестированию железа полезны? russcand Любые вопросы от новичков 14 01.09.2011 00:27
Инструкция по адресу "0x436b10f" обратилась к памяти "0x03793dac". ВИРУС???? skazka Windows XP 5 21.03.2010 01:21
помогите выбрать "ASRock P4i45PE" или "GigaByte GA-8PE800" Константин Материнские платы 2 06.12.2009 15:21
Как исправить "attempt to store duplicate value in unique index "RDB$INDEX_5" ?" devo4ka-nimfetka Другие СУБД 1 16.04.2009 09:58
Закрываются игры, появляется ошибка: "0xbe8787ba" или "0x3e89ce89" . ASUSTeK Техническая поддержка 42 19.02.2009 01:38
После подключения кнопок "power" и "reset" компьютер перестал включаться. Лаборант-Шурупов Любые вопросы от новичков 1 25.01.2009 15:15
Добавить кнопки "свернуть" и "восстановить" к окну готового dialog-based приложения Lesat Visual C++ 2 07.01.2006 04:34
Как сделать чтобы вместо кнопок "Да" и "Нет" высвечивалось украинсие "Так" и "Ні" Форсаж Delphi 5 19.07.2003 19:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов